我让Ctrl+Shift+X使用AutoIt启动了一个函数,但是使用它,Ctrl和Shift键就会被按住。插入{CTRL up}
和{SHIFT up}
没有效果。这一切为什么会发生?
我的AutoIt脚本:
$dll = DllOpen("C:\Windows\System32\user32.dll")
Global Const $keys[8] = [0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x5b, 0x5c]
;0xa0 LSHIFT
;0xa1 RSHIFT
;0xa2 LCTRL
;0xa3 RCTRL
;0xa4 LALT
;0xa5 RALT
;0x5b LWIN
;0x5c RWIN
HotKeySet("{PAUSE}", "stop")
HotKeySet("^X", test)
Opt("SendKeyDelay", 0)
Opt("SendKeyDownDelay", 0)
While True
Sleep(500)
WEnd
Func test()
Send("The control and shift keys are going to be stuck down at the end of this.")
Send("{ENTER}")
Send("{ENTER}")
Send("PlaceHolder,")
Send("{ENTER}")
Send("PlaceHolder")
Send("{TAB}")
Send("{HOME}")
Send("{LCTRL up}")
Send("{RCTRL up}")
Send("{LSHIFT up}")
Send("{RSHIFT up}")
Call("UnstickKeys")
EndFunc
Func UnstickKeys()
For $vkvalue In $keys
DllCall($dll, "int", "keybd_event", "int", $vkvalue, "int", 0, "long", 2, "long", 0) ;Release each key
Next
EndFunc
Func stop()
Exit
EndFunc ;==>stop the script
发布于 2018-07-17 18:52:40
我在下面修改了你的测试功能。这个解决方案有一个问题,因为要再次运行该函数,你将需要放弃Shift和ctrl,并对它们进行抑制。可以从代码中删除DLL调用。在调用函数时,我还禁用了^X热键。那样就更安全了。
Func test()
Hotkeyset("^X")
Send("The control and shift keys are going to be stuck down at the end of this.")
Send("{ENTER}")
Send("{ENTER}")
Send("PlaceHolder,")
Send("{ENTER}")
Send("PlaceHolder")
Send("{TAB}")
Send("{HOME}")
send("{CTRLDOWN}")
send("{CTRLUP}")
send("{SHIFTDOWN}")
send("{SHIFTUP}")
Hotkeyset("^X", "test")
EndFunc
https://stackoverflow.com/questions/-100008703
复制相似问题