Seite 1 von 3

KeyboardPushed() ohne Screen

Verfasst: 08.06.2006 17:50
von Wespe23
Hi
Mein Prob ganz kurz und bündig: Möchte den Befehl KeyboardPushed() auch ohne Screen aufrufen (wenn's geht auch ohne Window...)
Danke

PS: Müßte doch irgendeinen Win-API Befehl geben :praise: :praise:

Verfasst: 08.06.2006 17:52
von roherter
GetAsyncKeyState_(vkey) :)
edit:Welche taste?

Verfasst: 08.06.2006 18:15
von Wespe23
Na ja...
Da es um ein Systray Programm geht, hätte ich mir gedacht:
  • [F5] Soll den Manager öffnen
  • [F6] Soll das Hauptprogramm öffnen
  • [irgendwas] Soll eine Datei (zur Sammlung) hinzufügen
  • [irgendwas] Soll die Toolbar im IExi/FiFi/Scapy***/... hinzufügen
Das wär's :)

*** IExi = IE // FiFi = FireFox // Scapy = Netscape außerdem weiß ich nicht, wie man Toolbars im IE/Fifi... hinzufügt :roll: :roll:

Verfasst: 08.06.2006 18:22
von Jilocasin
also: #VK_F5 ...
|
"virtual key"

Verfasst: 08.06.2006 18:28
von roherter
was für eine toolbar? :?

Verfasst: 08.06.2006 22:54
von STARGÅTE
TIA
da hat wohl PB 3.3 doch noch ein vorteil :

Code: Alles auswählen

InitKeyboard()

Repeat 
 Delay(100)
 ExamineKeyboard() 
Until KeyboardPushed(#PB_Key_Escape) 
geht bei 3.3 ohne probleme ^^

(wollte ich nur mal so reinwerfen)

Verfasst: 08.06.2006 23:30
von PBZecke
Wenn Dein Programm im Systray ist, sollte es gar kein Hotkey geben,
da Dein Programm ja im Hintergrund läuft. Tastenkombinationen beziehen
sich immer auf das aktuelle im Vordergrund befindliche Fenster.

Verfasst: 09.06.2006 08:49
von Kaeru Gaman
jain

hotkey ok, aber dann eher kombinationen...

also, F5 gäb zweifellos nen konflikt, da würde ich schon strg-alt-F5 vorziehen...

Verfasst: 09.06.2006 10:38
von real
Wie schon gesagt: Da F5 etc. schon mit Systemfunktionen hinterlegt sein können immer nur in Kombination mit z.B. Strg oder Alt oder beiden.

Die Aussage von PBZecke stimmt nicht ganz. Unter Windows kannst Du RegisterHotkey_() nutzen, um globale Hotkeys zu definieren. Code siehst Du hier:

Code: Alles auswählen

Global HotkeyStrgF5,HotkeyStrgF6

Procedure HotkeyCallback(hwnd, msg, wParam, lParam)
  result = #PB_ProcessPureBasicEvents
  If msg = #WM_HOTKEY
    Select wParam
      Case HotkeyStrgF5:
        MessageRequester("Hotkey","Strg-F5 : Manager öffnen")
      Case HotkeyStrgF6:
        MessageRequester("Hotkey","Strg-F6 : Programm öffnen")
    EndSelect
  EndIf    
  ProcedureReturn result
EndProcedure

If OpenWindow(0, 100, 150, 300, 100, "Hotkey Demo", #PB_Window_Invisible)
  AddSysTrayIcon(1, WindowID(0), LoadImage(0, "C:\klein.ico"))
  SysTrayIconToolTip(1, "- Hotkey Demo -"+Chr(10)+"Ende mit Doppelklick (links)")
  HotkeyStrgF5 = GlobalAddAtom_("Test-Strg-F5")
  RegisterHotKey_(WindowID(0),HotkeyStrgF5,#MOD_CONTROL,#VK_F5)
  HotkeyStrgF6 = GlobalAddAtom_("Test-Strg-F6")
  RegisterHotKey_(WindowID(0),HotkeyStrgF6,#MOD_CONTROL,#VK_F6)
  SetWindowCallback(@HotkeyCallback(),0)
  Repeat
    Event = WaitWindowEvent()
    Select Event 
      Case #PB_Event_SysTray
        Select EventType()
          Case #PB_EventType_LeftDoubleClick
            Break
        EndSelect
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf 

Verfasst: 09.06.2006 10:45
von Kiffi
> Wie schon gesagt: Da F5 etc. schon mit Systemfunktionen hinterlegt
> sein können immer nur in Kombination mit z.B. Strg oder Alt oder
> beiden.

am besten ist es ohnehin, das ganze konfigurierbar zu machen, weil sich
bestimmte Tastaturkombinationen immer mit anderen Applikationen
überschneiden werden.

Grüße ... Kiffi