Seite 1 von 1
Hintergrundprogramm per Shortcut aufrufen
Verfasst: 17.08.2005 19:07
von pws32
Hallo,
ich habe da ein kleines Programm welches im Hintergrund minimiert läuft und darauf wartet das es manchmal benutzt wird, nun möcht ich gerne das Programm mit einem Shortcut CTRL-S etc. aus dem Hintergrund nach vorne holen und maximieren, einen Shortcut im Programm zu definieren bringt leider nichts weil das Programm im Hintergrund ja keinen Focus hat,
hat jemand eine Idee ?
Gruss Peter
Verfasst: 17.08.2005 19:35
von sim0n
Wieso trägst du denn dein Programm nicht einfach in die SysTray ein?
Dann kannst du wenn nötig mit nem Mausklick aufrufen
Verfasst: 17.08.2005 23:02
von bluejoke
Da fällt mir spontan GetAsyncKeyState_() ein
Verfasst: 17.08.2005 23:09
von Deeem2031
GetAsyncKeyState_() wird auch nicht helfen, da es auch den Focus auf das Fenster benötigt.
Ich würde einen KeyboardHook in Verbindung mit "GetKeyState_(#VK_...) & $F0000000" benutzen, so wie ich es auch bei EasyKill gemacht habe.
Verfasst: 17.08.2005 23:17
von MVXA
Das GetAsyncKeyState_() ein Focus auf das Fenster benötigt wäre mir
jetzt aber neu

.
Verfasst: 17.08.2005 23:26
von Deeem2031
Jedenfalls funktionierte es, als ich es in EasyKill eingebaut hatte nur als ich das Fenster geöffnet hatte. Kann aber auch sein das es an etwas anderem lag..
In der PSDK steht jedenfalls: "Windows NT/2000/XP: The return value is zero for the following cases: The foreground thread belongs to another process and the desktop does not allow the hook or the journal record."
Verfasst: 18.08.2005 00:48
von pws32
Hi,
Problem gelöst !, habe einen Code von Sparkie im englishen Forum gefunden den man einfach auf die eigenen Bedürfnisse anpassen kann.
Gruss Peter
Code: Alles auswählen
#VK_O = $4F
#MOD_WIN = $8
; --> We use this as our HotKey ID. It must be between 0 and $BFFF
; --> I'll just add #MOD_WIN + #VK_O for thhis ID
#HOTKEY_WIN_O = #MOD_WIN + #VK_O
quit = #False
Procedure myWindowCallback(hwnd, msg, wparam, lparam)
result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_HOTKEY
; --> Is this our HotKey
If wparam = #HOTKEY_WIN_O
beep_(100,100)
SetForegroundWindow_(WindowID())
MessageRequester("Info", "Hotkey pressed")
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(0, 0, 0, 300, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "HotKey test") And CreateGadgetList(WindowID())
SetWindowCallback(@myWindowCallback())
; --> Hotkey is WinKey + letter "O"
If RegisterHotKey_(WindowID(), #HOTKEY_WIN_O, #MOD_WIN, #VK_O)
MessageRequester("Info", "HotKey is registered")
TextGadget(0, 0, 90, 300, 20, "Press WinKey+O", #PB_Text_Center)
Else
MessageRequester("Error", "Unable to register HotKey")
quit = #True
EndIf
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
UnregisterHotKey_(WindowID(), #HOTKEY_WIN_O)
quit = #True
EndSelect
Until quit
EndIf
Verfasst: 18.08.2005 00:55
von vonTurnundTaxis
Deeem2031 hat geschrieben:Jedenfalls funktionierte es, als ich es in EasyKill eingebaut hatte nur als ich das Fenster geöffnet hatte. Kann aber auch sein das es an etwas anderem lag..
In der PSDK steht jedenfalls: "Windows NT/2000/XP: The return value is zero for the following cases: The foreground thread belongs to another process and the desktop does not allow the hook or the journal record."
Ich habe ein Programm, das Shortcuts per GetAsyncKeystate_() verwendet, um sich in den Vordergrund zu schieben...