Globale Hotkeys
Verfasst: 30.12.2010 18:20
hi leute! für eine musikplayersteuerung wollte ich mir globale hotkeys erstellen! diese sollen vom nutzer nahezu frei wählbar sein, da ich dass nur mit dem shortcutgadget nicht geschafft habe, habe ich ein bisschen gebastelt!
die hotkeys werden nicht erkannt oder der hotkeylistener will einfach nicht funktionieren hoffe ihr könnt mir helfen!
die hotkeys werden nicht erkannt oder der hotkeylistener will einfach nicht funktionieren hoffe ihr könnt mir helfen!
Code: Alles auswählen
EnableExplicit
Enumeration
#pause_play
#next
#prev
#stop
EndEnumeration
Global quit = 0
Procedure hotkeySelecter(x)
Protected combobox,shortcut,button,close
#MOD_NOREPEAT = $4000
If OpenWindow(#PB_Any, 100, 200, 170, 25, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
combobox = ComboBoxGadget(#PB_Any,0,0,50,25)
AddGadgetItem(combobox,0,"Ctrl")
AddGadgetItem(combobox,1,"Alt")
AddGadgetItem(combobox,2,"Shift")
SetGadgetState(combobox,0)
shortcut = ShortcutGadget(#PB_Any,50,0,50,25,#VK_1)
button = ButtonGadget(#PB_Any,100,0,70,25,"Add Hotkey")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
close=1
quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case shortcut
If GetGadgetState(shortcut) < $8 Or GetGadgetState(shortcut) > $91
SetGadgetState(shortcut,#VK_1)
EndIf
Case button
Select GetGadgetState(combobox)
Case 0
RegisterHotKey_(#Null,#next,#MOD_CONTROL|#MOD_NOREPEAT,GetGadgetState(shortcut))
Case 1
RegisterHotKey_(#Null,#next,#MOD_ALT|#MOD_NOREPEAT,GetGadgetState(shortcut))
Case 2
RegisterHotKey_(#Null,#next,#MOD_SHIFT|#MOD_NOREPEAT,GetGadgetState(shortcut))
EndSelect
Debug "hotkey added"
EndSelect
EndSelect
Until close Or quit
EndIf
EndProcedure
Procedure shortcutListener(dummy)
Global getmessage.msg
Repeat
If GetMessage_(getmessage,#Null, 0, 0) <> 0
If getmessage\message = #WM_HOTKEY
MessageRequester("","")
Select getmessage\wParam
Case #prev
Case #pause_play
Case #stop
Case #next
MessageRequester("","NEXT")
EndSelect
EndIf
EndIf
Delay(1)
Until quit
EndProcedure
CreateThread(@shortcutListener(),0)
hotkeySelecter(0)