Registriert seit: 16. Mai 2007
403 Beiträge
|
Re: CreateProcess nimmt Fokus weg
21. Jan 2010, 19:29
Diesen Hack hab ich zuvor versucht. Er hat aber leider zwei böse Nebeneffekte.
1. Ist man zu der Zeit als CreateProcess() passiert dabei einen Text (z.B. in einem Texteditor) zu schreiben, dann kann es passieren (nicht immer, aber mehrmals gehabt) dass ein Buchstabe dabei verlorengeht.
2. Launche ich mehrere URLs nacheinander und der User will in der Zwischenzeit (so lange die Webseiten laden) was anderen machen, wechselt er mitten drin den Fokus z.B. zum Windows Explorer. Wenn es mitten im CreateProcess passiert (unwahrscheinlich, aber möglich), setze ich den Fokus falsch zurück, auf das Fenster welches vor dem Explorer aktiv war.
--
Nach etwas mehr Debuggen sehe ich dass der Focus zu einem versteckten Fenstern mit der Klasse FirefoxMessageWindow wandert.
p.s.
Wenn Firefox noch nicht im Speicher ist, nimmt es sich immer den Focus, trotz loadDivertedInBackground = True und vor allem trotz SW_SHOWNOACTIVATE. Nach viel testen muss ich feststellen dass Firefox die einzige Anwendung ist welche alle SW_ Optionen komplett ignoriert. Hab 5 andere Programme (u.a. Notepad) mit SW_SHOWNOACTIVATE gestartet und sie nehmen keinen Focus an sich.
|