1
Developer's Corner / Re: Crazy Autohotkey issue
« on: January 19, 2016, 07:36 AM »
This is the updated LockDetect.ahk. Changes between this version and the original are on line 46 and the additional constants on lines 29-39.
Code: Autohotkey [Select]
- ;---------------------------------------------------------------
- ;Notify Lock\Unlock
- ; This script monitors LockWorkstation calls
- ;
- ; If a change is detected it 'notifies' the calling script
- ; On Lock
- ; This script will call function "on_lock()"
- ; On Unlock
- ; This script will call fucntion "on_unlock()"
- ;IMPORTANT: The functions "on_lock()" and "on_unlock()" DO NOT
- ;exist in this script, they are to be created in the script that
- ;calls notify_lock_unlock() (presumably your main script)
- ;---------------------------------------------------------------
- ;Re-purposed by WTO605
- ;Last edited 2009-08-18 16:34 UTC
- ;---------------------------------------------------------------
- ;Based on Winamp_Lock_Pause by MrInferno
- ;Posted: Fri Apr 21, 2006 4:49 am
- ;Source: http://www.autohotkey.com/forum/topic9384.html
- ;---------------------------------------------------------------
- ;Winamp_Lock_Pause was/is based on script codes from "shimanov"
- ;Posted: Thu Sep 15, 2005 12:26 am
- ;Source: http://www.autohotkey.com/forum/viewtopic.php?t=5359
- ;Posted: Tue Dec 06, 2005 9:14 pm
- ;Source: http://www.autohotkey.com/forum/viewtopic.php?t=6755
- ;---------------------------------------------------------------
- ;Initialize global constants
- WTS_CONSOLE_CONNECT := 0x1
- WTS_CONSOLE_DISCONNECT := 0x2
- WTS_REMOTE_CONNECT := 0x3
- WTS_REMOTE_DISCONNECT := 0x4
- WTS_SESSION_LOGON := 0x5
- WTS_SESSION_LOGOFF := 0x6
- WTS_SESSION_LOCK := 0x7
- WTS_SESSION_UNLOCK := 0x8
- NOTIFY_FOR_ALL_SESSIONS := 1
- NOTIFY_FOR_THIS_SESSION := 0
- WM_WTSSESSION_CHANGE := 0x02B1
- notify_lock_unlock()
- {
- Global WM_WTSSESSION_CHANGE
- Global NOTIFY_FOR_ALL_SESSION
- success := DllCall( "wtsapi32.dll\WTSRegisterSessionNotification", "uint", hw_ahk, "uint", NOTIFY_FOR_ALL_SESSIONS )
- {
- ;If DLL registration fails, wait 20 seconds and try again
- notify_lock_unlock()
- ;MsgBox, [WTSRegisterSessionNotification] failed: EL = %ErrorLevel%
- }
- return
- }
- Handle_WTSSESSION_CHANGE( p_w, p_l, p_m, p_hw )
- ; p_w = wParam ;Session state change event
- ; p_l = lParam ;Session ID
- ; p_m = Msg ;WM_WTSSESSION_CHANGE
- ; p_hw = hWnd ;Handle to Window
- {
- Global WTS_SESSION_LOCK
- Global WTS_SESSION_UNLOCK
- Global WTS_SESSION_LOGON
- Global WTS_SESSION_LOGOFF
- If ( p_w = WTS_SESSION_LOCK )
- {
- on_lock()
- }
- Else If ( p_w = WTS_SESSION_UNLOCK )
- {
- on_unlock()
- }
- Else If (p_w = WTS_SESSION_LOGON)
- {
- on_logon()
- }
- Else If (p_w = WTS_SESSION_LOGOFF)
- {
- on_logoff()
- }
- }
- FindWindowEx( p_hw_parent, p_hw_child, p_class, p_title )
- {
- return, DllCall( "FindWindowEx", "uint", p_hw_parent, "uint", p_hw_child, "str", p_class, "str", p_title )
- }