Desktop fokussiert?
-
Wie kann ich am einfachsten abfragen, ob der Benutzer den Desktop fokussiert hat (bzw. den Desktop sieht) oder ob eine andere Anwendung im Vordergrund ist?
Ein Programm, dass im Tray sitzt soll auf Tastendruck (mittels RegisterHotkey) der Leertaste seine Form anzeigen. Wenn nun aber z.B. Word oder ICQ etc. im Vordergrund ist, soll nicht bei jedem Drücken der Leertaste die Form erscheinen, würde ja auch ziemlich nerven. Ich benötige also eine Abfrage, die mir sagt, ob der Desktop fokussiert ist, oder eine andere Anwendung (egal welche) im Vordergrund ist.
HWND GetForegroundWindow(VOID);Return Value The return value is a handle to the foreground window. The foreground window can be NULL in certain circumstances, such as when a window is losing activation.Was sind denn alles "Umstände" (circumstances)? Vielleicht wenn der Desktop zu sehen ist?
Vielen Dank schonmal
cb
-
Hallo
Da hilft dir der Builder nicht weiter, du must dich im WinAPI-Forum umsehen.
bis bald
akari
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
GetFocus ?!
-
Also ich hab mir das mit GetFocus() nun mal angeschaut und mit Hilfe von diesem Thread ( http://www.c-plusplus.net/forum/viewtopic-var-t-is-157355-and-highlight-is-*getfocus*.html ) angewendet (Den Fenstertext ausgelesen). Dadurch, dass ich aber beim Drücken des Hotkeys in mein Programmcode gelange, da meine Anwendung ja den Ablauf für das Drücken dieser Taste bereitstellt, ist der Fenstertext immer gleich dem Namen meiner Anwendung. Ich verfälsche also quasi das Ergebnis dadurch, dass ich die Hotkeyaktion bestimme.
Hat einer eine Idee, wie ich das anders umgehen kann?
-
Wäre es nicht einfacher und sinnvoller eine andere Taste zu nehmen. Zum Beispiel eine Funktionstaste, die auch dafür gedacht sind?
-
Vielleicht, aber die Funktionstasten sind nicht so leicht erreichbar wie die Leertaste, zumahl diese z.B. im Builder benutzt werden, also das selbe Problem auftritt
-
hat niemand eine idee? Eigentlich brauch ich nur eine GetLastForegroundWindow() um eben das Handle des Fensters zu ermitteln, das vor meiner Anwendung den Fokus hatte.
-
IMHO bekommst Du das Desktop Window über GetForeGroundWindow wenn es das aktive Window ist.
NULL kann zurückgegeben werden, aber die Umstände sind eher dann gegeben wenn das System in einem nicht unbedingt definiertem Stadium ist (Startphase, Shutdown, evtl. gesperrter Desktop, etc.)
-
Also ich habe jetzt einfach als Hotkey die Kombination STRG+SPACE gewählt. Zwar nicht das was ich wollte, aber auch akzeptabel!