zone97 Posted January 11, 2017 Posted January 11, 2017 I am using the hotkey_21b.au3 UDF.. And as others have pointed out there is a glitch where the keys get stuck.. Here is an example script where I tried to make a work around. Anyone know how I might fix this? Short of not using the UDF... The test, I opened notepad put in some text, hit the hot key and it selected all and cleared. But often the CTRL or ALT key gets hung? I have even had it trigger CTRL-ALT-DEL .. Ideally Id like to find the glitch in the UDF and fix it. #include ".\Includes\HotKey_21b.au3" ; - 1620 = CTRL-ALT-T _HotKey_Assign('1620', 'test', $HK_FLAG_DEFAULT) While 1 Sleep(100) WEnd Func Test() ReleaseModifiers() Send("^a") Send("{DEL}") MsgBox(0, "test", "I sent a CTRL-A followed by DELETE") Exit EndFunc Func ReleaseModifiers() Send("{SHIFTUP}") Send("{CTRLUP}") Send("{ALTUP}") Sleep(100) EndFunc ;==>ReleaseModifiers HotKey_21b.au3 Spoiler WinSizer 2.1 (01/04/2017) - Download - [ Windows Layout Manager ]Folder+Program (12/23/2016) - Download - [ USB Shortcut Creator ]
anthonyjr2 Posted January 11, 2017 Posted January 11, 2017 (edited) Is this related at all to this? https://www.autoitscript.com/wiki/FAQ#Why_does_the_Ctrl_key_get_stuck_down_after_I_run_my_script.3F Edited January 11, 2017 by anthonyjr2 UHJvZmVzc2lvbmFsIENvbXB1dGVyZXI=
zone97 Posted January 11, 2017 Author Posted January 11, 2017 Yes and no... Last post on this page did something similar, but don't think the issue is resolved yet. https://www.autoitscript.com/forum/topic/90492-hotkey-udf/?page=10 Spoiler WinSizer 2.1 (01/04/2017) - Download - [ Windows Layout Manager ]Folder+Program (12/23/2016) - Download - [ USB Shortcut Creator ]
zone97 Posted January 18, 2017 Author Posted January 18, 2017 After trying several fixes. This one seems to be the most reliable. I replaced the built in Send() function with SendEx() Func SendEx($ss, $warn = "") Local $iT = TimerInit() ; - Check for stuck modifiers ALT, SHIFT, CTRL, LWIN, RWIN While _IsPressed("10") Or _IsPressed("11") Or _IsPressed("12") Or _IsPressed("5B") Or _IsPressed("5C") If $warn <> "" And TimerDiff($iT) > 1000 Then SplashTextOn("", "Working!", 130, 43, -1, -1, 1) Sleep(500) SplashOff() EndIf Sleep(50) WEnd Send($ss) EndFunc ;==>SendEx Spoiler WinSizer 2.1 (01/04/2017) - Download - [ Windows Layout Manager ]Folder+Program (12/23/2016) - Download - [ USB Shortcut Creator ]
careca Posted January 18, 2017 Posted January 18, 2017 (edited) I can't remember what it was exactly but you could send the key up, after using any ctrl or alt or shift. Edited January 18, 2017 by careca Spoiler Renamer - Rename files and folders, remove portions of text from the filename etc. GPO Tool - Export/Import Group policy settings. MirrorDir - Synchronize/Backup/Mirror Folders BeatsPlayer - Music player. Params Tool - Right click an exe to see it's parameters or execute them. String Trigger - Triggers pasting text or applications or internet links on specific strings. Inconspicuous - Hide files in plain sight, not fully encrypted. Regedit Control - Registry browsing history, quickly jump into any saved key. Time4Shutdown - Write the time for shutdown in minutes. Power Profiles Tool - Set a profile as active, delete, duplicate, export and import. Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes. NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s. IUIAutomation - Topic with framework and examples Au3Record.exe
zone97 Posted January 19, 2017 Author Posted January 19, 2017 I had tried the {CTRLUP} option, didn't work. Here is my text example with applied fixes. Not 100% but closest I could get. expandcollapse popup#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Run_Tidy=y #Tidy_Parameters=/tc 4 /reel #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include ".\Includes\HotKey_21b.au3" ; - Functional UDFs #include <Timers.au3> #include <Misc.au3> ; - 1621 = CTRL-ALT-U ; - Keyboard cleanup handler Global $dll = DllOpen(@WindowsDir & "\System32\user32.dll") Global Const $vKeys[8] = [0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0x5B, 0x5C] _HotKey_Assign('1621', 'test', $HK_FLAG_DEFAULT) While 1 Sleep(100) WEnd Func Test() ReleaseModifiers() SendEx("^a") SendEx("{DEL}") MsgBox(0, "test", "I sent a CTRL-A followed by DELETE") Quit() EndFunc ;==>Test Func SendEx($ss, $warn = "") Local $iT = TimerInit() ; - Check for stuck modifiers ALT, SHIFT, CTRL, LWIN, RWIN While _IsPressed("10") Or _IsPressed("11") Or _IsPressed("12") Or _IsPressed("5B") Or _IsPressed("5C") If $warn <> "" And TimerDiff($iT) > 1000 Then SplashTextOn("", "Working!", 100, 43, -1, -1, 1) Sleep(500) SplashOff() EndIf Sleep(50) WEnd Send($ss) EndFunc ;==>SendEx Func ReleaseModifiers() For $vKvalue In $vKeys DllCall($dll, "int", "keybd_event", "int", $vKvalue, "int", 0, "long", 2, "long", 0) ; Release each key Sleep(10) Next Sleep(100) EndFunc ;==>ReleaseModifiers Func Quit() DllClose($dll) ReleaseModifiers() Exit EndFunc ;==>Quit Spoiler WinSizer 2.1 (01/04/2017) - Download - [ Windows Layout Manager ]Folder+Program (12/23/2016) - Download - [ USB Shortcut Creator ]
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now