Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Frage zu FindWindow (https://www.delphipraxis.net/77965-frage-zu-findwindow.html)

Marco1974 27. Sep 2006 10:23


Frage zu FindWindow
 
Hallo,

ich habe ein Delphi-Programm geschrieben, welches eine andere Anwendung fernsteuert. Mittels FindWindow kann ich auch wunderbar das Handle dieser Anwendung ermitteln. Nur ist es leider so, dass der Fenstername der Anwendung ständig variiert. D.h. mal lautet er "AnwendungX", mal "AnwendungY", mal "Anwendung123", usw.
Wie kann ich denn mittels FindWindow ein Fenster finden, von dem nur der Teil des Fensternamens bekannt ist? Zumindest bei mir funktioniert das nur bei einer absoluten Übereinstimmung.

Viele Grüße

Marco

TAC 27. Sep 2006 11:11

Re: Frage zu FindWindow
 
Moin,

Handelt sich dabei zufällig um den IE?
Da gibts sicherlich auch diverse Themen zu, aber vielleicht reicht es ja schon, einfach den Classname mit einzubinden.

Mfg
tac

Marco1974 27. Sep 2006 11:15

Re: Frage zu FindWindow
 
Hallo,

nein - es ist nicht der IE ;-)

Hab jetzt gerade keine MS-SDK-Doku zur Hand, aber falls der Class-Name der erste Parameter von FindWindow ist, dann geb ich ihn durchaus mit an.

Es funktioniert ja auch wunderbar - nur würde ich halt gerne das Handle bekommen, ohne den 100% korrekten Fensternamen kennen zu müssen.

ste_ett 27. Sep 2006 11:17

Re: Frage zu FindWindow
 
Da bleibt dir nur die Variante mit "nil" als Name und selbst zu prüfen, ob der Name passt. :)

Marco1974 27. Sep 2006 11:20

Re: Frage zu FindWindow
 
Zitat:

Zitat von ste_ett
Da bleibt dir nur die Variante mit "nil" als Name und selbst zu prüfen, ob der Name passt. :)

Gibt's da echt keine Möglichkeit? In anderen Programmiersprachen funktioniert das doch auch :(

Christian Seehase 27. Sep 2006 11:32

Re: Frage zu FindWindow
 
Moin Marco,

Zitat:

Zitat von Marco1974
In anderen Programmiersprachen funktioniert das doch auch

aber auch nur dann, wenn die eine Funktion enthalten, wie ste_ett sie vorgeschlagen hat.

Marco1974 27. Sep 2006 11:38

Re: Frage zu FindWindow
 
Problem bei meiner Anwendung ist, dass die ersten 10 Zeichen fix sind und dann ca. 25 verschiedene alphanumerische Zeichen kommen (Compilerdatum + Nummer des Compilats + anderer Firlefanz)... Ich fürchte, dass das ein wenig beim Auslesen dauern könnte.

Weiß zufällig jemand, wie das Ganze bei "AutoIt" realisiert worden ist? Dort gibt es z.B. die Möglichkeit via FindWindows-Befehl auch das Handle von Fenstern zu bekommen, deren Titel nur teilweise bekannt sind. (Und es gibt keine Verzögerung, wenn ich mittels eines solchen FindWindows-Befehl Handles ermitteln möchte)

Viele Grüße

Marco

TAC 27. Sep 2006 12:04

Re: Frage zu FindWindow
 
Wenn es dann ein oder mehrere Windows mit selben oder ähnlichen Namen gibt, könnte hier die Lösung drinstecken :toic74860
Und da sich das handle zur Laufzeit eines Programm eigentlich nicht ändern sollte, braucht man dies ja auch nur einmal auslesen.

idontwantaname 27. Sep 2006 12:09

Re: Frage zu FindWindow
 
schau dir mal FindAllWindows an. Du könntest die Funktion so ändern, dass sie deinen Wünschen entspricht (also die Zeile mit CompareText ;))

Christian Seehase 27. Sep 2006 18:06

Re: Frage zu FindWindow
 
Moin Marco,

Die Stichworte/Suchbegriffe, die mir zur Problemlösung einfallen:
EnumWindows, IsWindowVisible, SendMessage/WM_GETTEXT/WM_GETTEXTLENTH, pos, AnsiUpperCase oder AnsiLowerCase.

Soll heissen:
Alle Top-Level-Fenster durchgehen, dabei die sichbaren herausfiltern, die Caption holen und prüfen, ob der Fenstertitel mit dem gewünschten String anfängt.

[EDIT]
Humane Rechtschreibkorrektur durchgeführt.
[/EDIT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr.
Seite 1 von 2  1 2      

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