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

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

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