RegisterHotKey_()
RegisterHotKey_()
Hallo!
Ich habe eine leicht verständliche Seite gefunden, auf der RegisterHotkeys_() gut erklärt wird:
http://www.christianroessler.net/content/37/
Hier Google's Cacheversion, falls der Link nicht funktioniert: http://66.249.93.104/search?q=cache:3Z1 ... lr=lang_de
Der Link oben dient anderen Usern, die Fragen zu "globalen Tastenkombinationen" oder Ähnlichem haben.
Meine Frage ist allerdings:
Ich habe woanders gelesen, dass diese Hotkeys vor Beenden des (eigenen) Programms deregistriert werden müssen. Muss das sein? Und wie macht man das?
MfG, AND51
Ich habe eine leicht verständliche Seite gefunden, auf der RegisterHotkeys_() gut erklärt wird:
http://www.christianroessler.net/content/37/
Hier Google's Cacheversion, falls der Link nicht funktioniert: http://66.249.93.104/search?q=cache:3Z1 ... lr=lang_de
Der Link oben dient anderen Usern, die Fragen zu "globalen Tastenkombinationen" oder Ähnlichem haben.
Meine Frage ist allerdings:
Ich habe woanders gelesen, dass diese Hotkeys vor Beenden des (eigenen) Programms deregistriert werden müssen. Muss das sein? Und wie macht man das?
MfG, AND51
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Re: RegisterHotKey_()
> Ich habe eine leicht verständliche Seite gefunden, auf der
> RegisterHotkeys_() gut erklärt wird:
noch einfacher wird's mit der GlobalHotkeys-Lib aus dem PBOSL-Paket
> Ich habe woanders gelesen, dass diese Hotkeys vor Beenden des
> (eigenen) Programms deregistriert werden müssen. Muss das sein?
keine Ahnung. Aber schaden tut's mit Sicherheit nicht, wenn man vor
Programmende aufräumt.
> Und wie macht man das?
Mit RemoveHotkey()
Grüße ... Kiffi
> RegisterHotkeys_() gut erklärt wird:
noch einfacher wird's mit der GlobalHotkeys-Lib aus dem PBOSL-Paket

> Ich habe woanders gelesen, dass diese Hotkeys vor Beenden des
> (eigenen) Programms deregistriert werden müssen. Muss das sein?
keine Ahnung. Aber schaden tut's mit Sicherheit nicht, wenn man vor
Programmende aufräumt.
> Und wie macht man das?
Mit RemoveHotkey()

Grüße ... Kiffi
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Ja,
Ansonsten nimm doch einfach die GlobalHotKey Lib vom PBOSL, da kannste auch den Source laden 
Code: Alles auswählen
UnregisterHotKey_(WindowID(Window), HotkeyID)

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Lieber spät als gar nicht: Dankeschön!
Trotzdem würd mich interessieren, was passiert, wenn man die Hotkeys nicht entfernt, bin halt so neugierig...

Trotzdem würd mich interessieren, was passiert, wenn man die Hotkeys nicht entfernt, bin halt so neugierig...
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
@marco2006: kann vielleicht hiermit zusammenhängen?
Grüße ... Kiffi
u. U. kann Thomas oder Daniel was dazu sagen...http://pbosl.purearea.net/index.php?site=News hat geschrieben:25-May-2006: Deleted some libraries which don't work anymore with PureBasic v4.0
Grüße ... Kiffi
a²+b²=mc²
Hi,
ich habe mal wieder geklaut...
Was muss ich machen, damit CRTL+Y immer reagiert und die Gadgets trotzdem funktionstüchtig bleiben?
Thread?
Das da muss wohl irgendwo rein? In der Repeat-Schleife wird`s problematisch, oder?
Hier der Restcode:
Hat jemand eine Idee?
lg
Marco
PS: Code von Mistrel geklaut...
ich habe mal wieder geklaut...
Was muss ich machen, damit CRTL+Y immer reagiert und die Gadgets trotzdem funktionstüchtig bleiben?
Thread?
Das da muss wohl irgendwo rein? In der Repeat-Schleife wird`s problematisch, oder?
Code: Alles auswählen
GetMessage_(@Msg, 0, 0, 0)
If MSG\message = #WM_HOTKEY
Select MSG\wParam
Case hk1
MessageRequester("ok", "ok")
EndSelect
EndIf
Code: Alles auswählen
Procedure HotKey(Key, Modifiers)
Static ID
If RegisterHotKey_(0, ID, Modifiers, Key) = 0
ProcedureReturn -1
EndIf
ID+1
ProcedureReturn ID-1
EndProcedure
Msg.MSG
hk1=HotKey(#VK_Y,#MOD_CONTROL)
If OpenWindow(0, 200, 200, 600, 300, "Test!") And CreateGadgetList(WindowID(0))
StringGadget(0, 10,10,80,20, "")
StringGadget(1, 10,50,80,20, "")
EndIf
Repeat
event=WaitWindowEvent()
Until event=#WM_CLOSE
lg
Marco
PS: Code von Mistrel geklaut...
Windows 11 - PB 6.03 x64
_________________________________
_________________________________
marco2006 hat geschrieben:Hat jemand eine Idee?
Code: Alles auswählen
#PB_Event_Hotkey = 786
Repeat
event=WaitWindowEvent()
Select event
Case #PB_Event_Hotkey
Select EventwParam()
Case hk1
MessageRequester("ok", "ok")
EndSelect
EndSelect
Until event=#WM_CLOSE
a²+b²=mc²
kein Problem, marco2006.
Ich habe den Source der GlobalHotKey-Lib nebst Beispiel
noch auf meiner Platte gefunden:
Ich habe den Source der GlobalHotKey-Lib nebst Beispiel
noch auf meiner Platte gefunden:
Code: Alles auswählen
; GlobalHotkeys library
; By Gansta93
; procedure AddHotkey
;{
ProcedureDLL AddHotkey(Window, fsModifiers, Keys, HotkeyID) ; Create a new global hotkey HotkeyID in specified Window.
ProcedureReturn RegisterHotKey_(WindowID(Window), HotkeyID, fsModifiers, Keys)
EndProcedure
ProcedureCDLL AddHotkey_DEBUG(Window, fsModifiers, Keys, HotkeyID)
If IsWindow(Window) = 0
; TB_DebugError("Specified Window is invalid.")
EndIf
EndProcedure
;}
; Procedure RemoveHotkey
;{
ProcedureDLL RemoveHotkey(Window, HotkeyID) ; Remove Specified HotkeyID in Window.
ProcedureReturn UnregisterHotKey_(WindowID(Window), HotkeyID)
EndProcedure
ProcedureCDLL RemoveHotkey_DEBUG(Window, HotkeyID)
If IsWindow(Window) = 0
; TB_DebugError("Specified Window is invalid.")
EndIf
EndProcedure
;}
; Sample (angepasst an PB4.x)
#PB_Event_Hotkey = 786
If OpenWindow(0, 0, 0, 200, 200, "Global hotkeys", #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_SystemMenu) And CreateStatusBar(0, WindowID(0))
StatusBarText(0, 0, "Type Alt+A or Alt+B")
; We create the hotkeys, and display an error box if it is impossible to create one or the two.
If AddHotkey(0, #MOD_ALT, #PB_Shortcut_A, 0) = 0
MessageRequester("Error", "Cannot create hotkey 0.")
ElseIf AddHotkey(0, #MOD_ALT, #PB_Shortcut_B, 1) = 0
MessageRequester("Error", "Cannot create hotkey 1.")
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_Hotkey ; If an hotkey was called
Select EventwParam() ; For know what hotkey was called, no documentation on PureBasic for this function.
Case 0 ; Hotkey with ID 0 (Alt+A)
MessageRequester("Info", "Hotkey 0!")
Case 1 ; Hotkey with ID 1 (Alt + B)
MessageRequester("Info", "Hotkey 1!")
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
Delay(1)
ForEver
; Now we remove the hotkeys.
RemoveHotkey(0, 0)
RemoveHotkey(0, 1)
EndIf
End
a²+b²=mc²