Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prüfen, ob ein Fenster "echt" im Vordergrund ist (https://www.delphipraxis.net/168142-pruefen-ob-ein-fenster-echt-im-vordergrund-ist.html)

tofse 7. Mai 2012 12:52

Prüfen, ob ein Fenster "echt" im Vordergrund ist
 
Hallo,
von meinem Programm aus muss die Suchfunktion eines externen Programmes gesteuert werden. Ich gehe so vor:

1) Ich durchsuche zunächst die Fenstertitel, um zu prüfen, ob das externe Programm überhaupt geöffnet ist
2) Ist es geöffnet, hole ich es in der Vordergrund
Code:
SendMessage(iHandle, WM_SYSCOMMAND, SC_RESTORE, iHandle);
SetForegroundWindow(iHandle);
3) Danach kommen ein paar simulierte Tastendrückereien...F3, TAB, TAB, STRG-V, ENTER

Klappt alles wunderbar, wenn das Programm in den Vordergrund geholt werden kann.

Nun das Problem: in diesem Programm können Unterformulare geöffnet werden, die immer im Vordergrund bleiben, sobald das Programm aktiviert wird. In diesem Falle würden meine simulierten Tastenkombinationen zu unschönen Ergebnissen führen.

Also müsste ich irgendwie prüfen, ob wirklich das "Hauptfenster" des Programmes den Fokus hat, oder ein unerwünschtes Unterformular.
Geht das? Ich könnte natürlich eine Negativliste der unerwünschten Fenstertitel führen, aber das wäre doch sehr umständlich und aufwändig.

Grüße
Christof

tofse 7. Mai 2012 13:12

AW: Prüfen, ob ein Fenster "echt" im Vordergrund ist
 
Selber beantwortet :-D:-D:-D
Nach SetForegroundWindow(iHandle) vergleiche ich iHandle nochmal mit GetForegroundWindow. Wenn es ungleich ist, dann ist das gewünschte Programm nicht im Vordergrund.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz