Code: Select all
Global hot, vk.w
Declare Sendkey(*value)
Procedure RegisterSystemHotkey(ID.i, Key1.i, Key2.i)
RegisterHotKey_(0,ID, Key1, Key2)
EndProcedure
Procedure UnregisterSystemHotkey(ID.i)
UnregisterHotKey_(0,ID)
EndProcedure
Procedure SendKey(*value)
keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT key
keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL key
keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT key
keybd_event_(#VK_LWIN,0,#KEYEVENTF_KEYUP,0) ; Release WINDOWS key
VK=#VK_W
If hot=1
Repeat
Delay (20):keybd_event_(VK, Scan, Extended, 0)
ForEver
EndIf
EndProcedure
RegisterSystemHotkey(1,#MOD_CONTROL, $31) : RegisterSystemHotkey(2,#MOD_CONTROL, $32) ;CTRL 1 / CTRL + 2
If OpenWindow(0, 0, 0, 200, 80, "W pusher", #PB_Window_MinimizeGadget | #PB_Window_Minimize | #PB_Window_BorderLess)
hk1 = TextGadget(#PB_Any, 5, 5, 120, 30, "CTRL+1 Enable/Disable")
hk2 = TextGadget(#PB_Any, 5, 25, 120, 30, "CTRL+2 Enable/Disable")
hk3 = TextGadget(#PB_Any, 5, 45, 120, 30, "Status = Disabled")
Repeat
Event = WaitWindowEvent()
Select Event
Case #WM_HOTKEY
If hot = 0
hot = 1
SetGadgetText(hk3,"Status = Enabled")
MyThread = CreateThread(@SendKey(),1)
Else
hot = 0
SetGadgetText(hk3,"Status = Disabled")
KillThread(MyThread)
Delay(20):keybd_event_(VK, Scan, #KEYEVENTF_KEYUP | Extended, 0)
EndIf
EndSelect
Until Event = #PB_Event_CloseWindow
If IsThread(MyThread):KillThread(MyThread):EndIf
UnregisterSystemHotkey(1) : UnregisterSystemHotkey(2)
Delay(20):keybd_event_(VK, Scan, #KEYEVENTF_KEYUP | Extended, 0)
EndIf