window tastendruck

Anfängerfragen zum Programmieren mit PureBasic.
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

window tastendruck

Beitrag von Brügge »

hi ich habe mal eine frage:

ich habe ein Programm geschrieben, und ich möchte, wenn es nicht anvisiert ist, der User allerdings f10 drückt, das dann Window 0 im Vordergrund ist.

ist das möglich?

also window 0 im vordergrund zu holen ist einfach aber der rest...


thx!
Benutzeravatar
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

Beitrag von ts-soft »

F10 ist nicht gut, hier ein Beispiel mit Alt-F10, wobei das nur funktioniert, wenn dieser Shortcut unbenutzt ist. Sollte also vom User einzustellen sein!

Code: Alles auswählen

; GlobalHotkeys library
; By Gansta93

#MOD_WINDOWS = $8
#PB_Event_Hotkey = 786

Procedure AddHotkey(Window, fsModifiers, Keys, HotkeyID) ; Create a new global hotkey HotkeyID in specified Window.
  ProcedureReturn RegisterHotKey_(WindowID(Window), HotkeyID, fsModifiers, Keys)
EndProcedure

Procedure RemoveHotkey(Window, HotkeyID) ; Remove Specified HotkeyID in Window.
  ProcedureReturn UnregisterHotKey_(WindowID(Window), HotkeyID)
EndProcedure

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+F10")
  ; 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_F10, 0) = 0
    MessageRequester("Error", "Cannot create hotkey 0.")
  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! (Alt + F10)")
         EndSelect
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
  ; Now we remove the hotkeys.
  RemoveHotkey(0, 0)
EndIf
End
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.
Bild
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Beitrag von Karl »

Schau mal

GetAsyncKeyState

Gruß Karl
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

hi das problem ist dies: am anfang habe ich kein window und wenn ich f10 drücke soll eins erscheinen... (ist ein musik programm und der soll die musik nur im hintergrund spielen, und wenn ich etwas einstellen möchte drücke ich halt f10 und das menü kommt (ein window)
Benutzeravatar
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

Beitrag von ts-soft »

Fenster verstecken. Obigen Code einfach anpassen, also statt MessageRequester dort HideWindow(0, #False)
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.
Bild
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

ok thx habe es verstanden!


THX @ all
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Beitrag von Karl »

Hier mal meine Variante:

Code: Alles auswählen

;Hotkey für Vordergrund

Procedure Steuerthread()
   
   Repeat
      If GetAsyncKeyState_(#VK_MENU) And GetAsyncKeyState_(#VK_F12)
         SetActiveWindow(0) 
         SetWindowState(0, #PB_Window_Maximize) ;um zu zeigen, dass es würgt ;-)
      EndIf
   ForEver
   
EndProcedure


If OpenWindow(0, 0, 0, 640, 480, "Jannys Eis", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget)
   
   th = CreateThread(@Steuerthread(), 0)
   
   Repeat
      event.l = WaitWindowEvent()
        
   Until event = #PB_Event_CloseWindow
   If th : KillThread(th) : EndIf
   CloseWindow(0)
EndIf
Alt + F12 als Hotkey

Gruß Karl
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
Benutzeravatar
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

Beitrag von ts-soft »

@Brügge
Nimm lieber meine Variante, dann kriegen die anderen Programme noch Luft :mrgreen:
Der Code von Karl ist ein CPU-Killer, sorry
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.
Bild
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Beitrag von Karl »

Hey,

dafür spart er die Heizung ;-)

Gruß Karl
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Beitrag von super_castle »

und kann sich ein bier kaufen...
Antworten