请问如何用VFP代码实现模拟ctrl+Win的按键动作?
请问如何用VFP代码实现模拟ctrl+Win的按键动作?
2021-12-30 09:19
2021-12-30 09:25
程序代码:of = CREATEOBJECT("form1")
of.show(1)
DEFINE CLASS form1 as Form
ADD OBJECT edit1 as editbox WITH left=10,top=10,width=300,height=200
PROCEDURE init
BINDEVENT(this.hWnd, 0x100, this, "myKeyDown")
BINDEVENT(this.hWnd, 0x101, this, "myKeyUp")
BINDEVENT(this.hWnd, 0x104, this, "mySysKeyDown")
BINDEVENT(this.hWnd, 0x105, this, "mySysKeyUp")
ENDPROC
PROCEDURE myKeyDown(hWnd, Msg, wParam, lParam)
this.edit1.SelText = "KeyDown " + TRANSFORM(wParam,"@0") + ", " + TRANSFORM(lParam,"@0") + 0h0D0A
ENDPROC
PROCEDURE myKeyUp(hWnd, Msg, wParam, lParam)
this.edit1.SelText = "KeyUp " + TRANSFORM(wParam,"@0") + ", " + TRANSFORM(lParam,"@0") + 0h0D0A
ENDPROC
PROCEDURE mySysKeyDown(hWnd, Msg, wParam, lParam)
this.edit1.SelText = "SysKeyDown " + TRANSFORM(wParam,"@0") + ", " + TRANSFORM(lParam,"@0") + 0h0D0A
ENDPROC
PROCEDURE mySysKeyUp(hWnd, Msg, wParam, lParam)
this.edit1.SelText = "SysKeyUp " + TRANSFORM(wParam,"@0") + ", " + TRANSFORM(lParam,"@0") + 0h0D0A
ENDPROC
ENDDEFINE
2021-12-30 10:09
2021-12-30 11:04
[此贴子已经被作者于2021-12-30 12:10编辑过]
2021-12-30 12:08
程序代码:DECLARE Long keybd_event IN user32 long,long,long,long
#define KEYEVENTF_KEYUP 2
#define VK_CONTROL 0x11
#define VK_LWIN 0x5B
#define VK_E 0x45
of = CREATEOBJECT("form1")
of.show(1)
DEFINE CLASS form1 as Form
ADD OBJECT cmd1 as commandbutton with left=10,top=10,width=100,height=22,caption="Ctrl+Win"
ADD OBJECT cmd2 as commandbutton with left=120,top=10,width=100,height=22,caption="Win+E"
ADD OBJECT edit1 as editbox WITH left=10,top=40,width=300,height=200
PROCEDURE init
BINDEVENT(this.hWnd, 0x100, this, "myKeyDown")
BINDEVENT(this.hWnd, 0x101, this, "myKeyUp")
BINDEVENT(this.hWnd, 0x104, this, "mySysKeyDown")
BINDEVENT(this.hWnd, 0x105, this, "mySysKeyUp")
ENDPROC
PROCEDURE myKeyDown(hWnd, Msg, wParam, lParam)
this.edit1.SelText = "KeyDown " + TRANSFORM(wParam,"@0") + ", " + TRANSFORM(lParam,"@0") + 0h0D0A
ENDPROC
PROCEDURE myKeyUp(hWnd, Msg, wParam, lParam)
this.edit1.SelText = "KeyUp " + TRANSFORM(wParam,"@0") + ", " + TRANSFORM(lParam,"@0") + 0h0D0A
ENDPROC
PROCEDURE mySysKeyDown(hWnd, Msg, wParam, lParam)
this.edit1.SelText = "SysKeyDown " + TRANSFORM(wParam,"@0") + ", " + TRANSFORM(lParam,"@0") + 0h0D0A
ENDPROC
PROCEDURE mySysKeyUp(hWnd, Msg, wParam, lParam)
this.edit1.SelText = "SysKeyUp " + TRANSFORM(wParam,"@0") + ", " + TRANSFORM(lParam,"@0") + 0h0D0A
ENDPROC
PROCEDURE cmd1.click
Keybd2(VK_CONTROL, VK_LWIN) && Ctrl+Win
ENDPROC
PROCEDURE cmd2.click
Keybd2(VK_LWIN, VK_E) && Win+E 打开资源管理器
ENDPROC
ENDDEFINE
FUNCTION Keybd2(vk1, vk2)
keybd_event(vk1, 0, 0, 0)
keybd_event(vk2, 0, 0, 0)
keybd_event(vk2, 0, KEYEVENTF_KEYUP, 0)
keybd_event(vk1, 0, KEYEVENTF_KEYUP, 0)
ENDFUNC
2021-12-30 19:29
2021-12-30 21:18
2022-01-03 18:26
2022-01-03 21:01
[此贴子已经被作者于2022-1-4 05:47编辑过]
2022-01-04 05:36