Probleme mit Focusverlust Delphi 2010
21. Mai 2012, 15:19
Hi, ich habe Probleme das meine Anwendung ab und zu den Focus verliert bzw. gar nicht erst bekommt.
Folgendes Szenario :
Windows 7 startet bei Systemstart per Autostart ein Delphiprogramm, nennen wir es mal "GsMenu".
Das GsMenu Programm startet je nach Auswahl eines von 14 Programmen die als fertige *.exe vorliegen.
Zusätzlich wird ein Hintergrundprogramm gestartet was Bildschirmausgaben auf einem Sekundären Bildschirm ausführt. Danach Terminiert das GsMenu Programm sich selber.
Wenn das gewählte der 14 Programme ausgeführt und beendet wurde ruft dies wieder das Menu-Programm auf.
Zu bestimmt 99% funktioniert dieses Szenario problemlos.
Manchmal (selten) tritt aber auf, das entweder das Menu-Programm oder auch die gestartete der 14 Anwendungen nicht den Eingabefocus hat.
Woran kann das liegen ?
Ich habe mir schon versucht mit einem Timer-Event der auf "onTimer" liegt alle 500ms den Focus anzueignen, auch dies funktioniert fast immer, aber eben nicht zu 100%.
Versucht habe ich bis jetzt folgende Befehle innerhalb des onTimer Events :
Application.bringtofront;
self.bringtofront ;
self.SetFocus;
GsMenu.SetFocus; (* GsMenu ist der Name des Tform *)
Zur Sicherheit danach testweise auch noch noch ein Application.processmessages;
Ferner habe ich auch versucht die Windows Message SW_Restore an das Fenster bzw. dessen Handles meines Menu Programmmes zu schicken.
Alles funktioniert halt prima zu 99%, nur das 1% in dem der Fehler auftritt ist übel, da das Gerät was damit gesteurt wird keine Maus haben wird um sich den Focus aktiv zu "erclicken".
Auf der Entwicklungsumgebung kann man sich durch "ALT-TAB" oder Mausclick behelfen den Focus zurückzugewinnen, dies ist aber im Endgerät nicht möglich.
Hat jemand eine Idee, alles was ich per Board-Suche gefunden und versucht habe hatte auch nur den 99% Erfolg.
Danke im Voraus
P.S. Noch eine Ergänzung. Alle Programme werden mit Adminstrator Rechten ausgeführt. Ein Tip diesbezüglich hat leider auch keine Besserung gebracht.
Geändert von Kobayashi (21. Mai 2012 um 17:09 Uhr)
Grund: Ergänzung/Korrektur
|