Hallo zusammen,
ich bräuchte wieder mal Eure Hilfe. Habe mit der Suchfunktion und Google leider nichts gefunden.
Ich muss mit meinem Programm überprüfen, ob der Fensterfokus geändert hat.
Also beim starten meines Programms (welches keine GUI hat) ist der Fokus auf einem beliebigen Fenster. Wenn ich nun mit der Maus oder mit der Tastatur (oder durch einen Systemgenerierten Event wie Geplanter Task) ein neues Fenster öffne oder einfach nur den Fokus auf ein beliebiges anderes Fenster setze, dann möchte ich mit meinem Programm in eine Funktion springen!
Bis jetzt löse ich das so, dass ich mit AdlibRegister alle 200ms den aktiven Fenstertitel abfrage. Wenn der Titel anders ist, als bei der letzten Prüfung, dann werden diverse Dinge ausgeführt.
Dies funktioniert zwar gut, jedoch mit zwei Einschränkungen:
- Wenn ich schneller als 200ms reagieren möchte, dann nimmt die CPU Last auf älteren PCs deutlich zu.
- Wenn ich mit Alt+Tabulator (Win7) den Fensterfokus ändere, dann wird oft das "Fenster" Programmumschaltung als neues Fenster detektiert. Dies soll aber verhindert werden. (Und zwar nicht nur im deutschsprachigen Windows, sondern auch in allen anderen Sprachen!!)
Wie könnte man einen Event generieren, der nur bei Fenster-Fokusänderungen eine Funktion aufruft?
Bei GUIRegisterMsg habe ich leider nichts entsprechendes gefunden.
Vielen Dank für Eure Hilfe!
Veronesi