Hotkeys...

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Beitrag von PBZecke »

Brauchste auch nur zwei übergeben. In Deiner procedure HotkeyCallback Wparam und lparam sind die Werte die du dann bei msg #WM_HOTKEY übergeben bekommst

Also #WM_HOTKEY abfangen und dann Dein wparam auslesen
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

so funktioniert es (PB ab 4.0):

Code: Alles auswählen

#Hauptfenster=0

Global HotkeyStrgC ,HotkeyStrgX,HotkeyStrgV

Procedure HotkeyCallback(hwnd, msg, wParam, lParam)
  result = #PB_ProcessPureBasicEvents
  Select msg
      Case #WM_HOTKEY
      If wParam=HotkeyF5:   
      MessageRequester("Info", "HotkeyF5")
      ElseIf wParam=HotkeyStrgX:
      MessageRequester("Info", "HotkeyStrgX")
      ElseIf wParam=HotkeyStrgC:
      MessageRequester("Info", "HotkeyStrg")
      ElseIf wParam=HotkeyStrgV:   
      MessageRequester("Info", "HotkeyStrgV")
      EndIf
    EndSelect
    ProcedureReturn result
EndProcedure


If OpenWindow(#Hauptfenster, 100, 200, 900, 500, "Seitentitel", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_Maximize)
 
  CreateGadgetList(WindowID(#Hauptfenster))
 
    ;HotkeyF5 = GlobalAddAtom_("F5")
    HotkeyStrgX = GlobalAddAtom_("Strg-X")
    HotkeyStrgC = GlobalAddAtom_("Strg-C")
    HotkeyStrgV = GlobalAddAtom_("Strg-V")

    ;RegisterHotKey_(WindowID(#Hauptfenster), HotkeyF5, #VK_F5)
    
    If RegisterHotKey_(WindowID(#Hauptfenster), HotkeyStrgX, #MOD_CONTROL , #VK_X)
    MessageRequester("Info", "HotKeys sind initialisiert")
    Else
    MessageRequester("Info", "Hotkey nicht initialisiert")
    EndIf
    RegisterHotKey_(WindowID(#Hauptfenster), HotkeyStrgC, #MOD_CONTROL , #VK_C)
    RegisterHotKey_(WindowID(#Hauptfenster), HotkeyStrgV, #MOD_CONTROL , #VK_V)

    SetWindowCallback(@HotkeyCallback())

    Repeat
    Event = WaitWindowEvent()
   
    Select Event
      Case #PB_Event_Gadget
     
        Select EventGadget()
   
        EndSelect   
     
    EndSelect
     
  Until Event = #PB_Event_CloseWindow
   
EndIf
Zuletzt geändert von dysti am 09.08.2007 18:18, insgesamt 2-mal geändert.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Beitrag von DerProgrammierer78 »

Und wie erkennt der dann, welcher Hotkey nun aktiviert wurde ? Weil irgendwie muss ich die ja mit Select und Case auswerten können oder ?

Ich bin irgendwie irritiert :freak:
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Beitrag von DerProgrammierer78 »

Hallo dysti,

Bei deinem Beispiel sagt er zwar, dass die Hotkeys installiert sind, aber sie funktionieren leider nicht ...

Liegt das evtl. daran, dass ich PB 4.1 Beta 2 nutze ?
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Es muste diese Zeile noch eingefügt werden. Habe es oben geändert.

Code: Alles auswählen

Global HotkeyStrgC ,HotkeyStrgX,HotkeyStrgV
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Beitrag von DerProgrammierer78 »

Super ... danke !!! das klappt nun .... !!!
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
Antworten