![]() |
Handle einer MainForm erhalten
Moin,
ich hätte gerne das Handle einer MainForm - ich habe aber nur das Handle der zugehörigen Application und der Titel der MainForm kann variieren. So erhalte ich das Handle der Application:
Delphi-Quellcode:
Ich weiß zwar, dass ich so das Handle einer Form erhalten kann:
var AppHandle: HWND;
begin AppHandle := FindWindow(nil, 'Name meiner Anwendung'); if AppHandle <> 0 then //...
Delphi-Quellcode:
...aber wie gesagt, kenne ich den Titel meiner Form nicht bzw. dieser kann sich ständig ändern und ist somit nicht eindeutig.
var FrmHandle: HWND;
begin FrmHandle := FindWindowEx(0, 0, nil, 'Titel meiner Form'); if FrmHandle <> 0 then //... |
Re: Handle einer MainForm erhalten
Bei FindWindow kannst Du als ersten Parameter die Klasse angeben, von der das Fenster sein soll.
Den zweiten Parameter machst Du dann nil. |
Re: Handle einer MainForm erhalten
Meinst Du so:
Delphi-Quellcode:
???
FindWindow('TForm', nil);
Na, wer weiß wie viele TForm's gerade laufen, da würd ich doch jede Menge Handels bekommen... Also es soll halt die MainForm der Application (s. erster Code) sein! |
Re: Handle einer MainForm erhalten
Delphi-Quellcode:
self.Handle
|
Re: Handle einer MainForm erhalten
Zitat:
Also ein fremdes Programm! |
Re: Handle einer MainForm erhalten
eher so:
Delphi-Quellcode:
so kannst Du sagen, dass Du das Handle des Fensters willst, das von der "EineBestimmteForm" abstammt. Der Titel des Fensters ist dann egal.
myHandle := FindWindow('TEineBestimmteForm', nil);
|
Re: Handle einer MainForm erhalten
Ja, so funktioniert's, Danke :thumb:
Delphi-Quellcode:
Allerdings funzt es nach ein paar Mal nicht mehr, erst wenn ich die Anwendung dann wieder neu starte :gruebel:
var FrmHandle: HWND;
begin FrmHandle := FindWindow('TForm1', nil); Aber das wird ich bestimmt irgendwie noch in den Griff bekommen... |
Re: Handle einer MainForm erhalten
Zitat:
Es lag daren, dass ich wohl in meinen Projekten öfters Forms mit dem Namen TForm1 habe (bin immer zu faul zum Umbenennen). Besser ist es, hier einen eindeutigen Namen für die Form zu nehmen! |
Re: Handle einer MainForm erhalten
Moin Martin,
Zitat:
|
Re: Handle einer MainForm erhalten
naja, es war schon eine von mir programmierte Anwendung.
Oder was meinst du jetzt? |
Re: Handle einer MainForm erhalten
Moin Martin,
wenn Du es selber beeinflussen kannst, funktioniert es natürlich so. |
Re: Handle einer MainForm erhalten
Zitat:
Wenn diese dann einen gebräuchlichen Namen wie TForm1 oder so hat, kann man wohl nix machen... |
Re: Handle einer MainForm erhalten
Moin Martin,
in dem Falle brauchst Du halt noch weitere Informationen, mit denen Du das Fenster eindeutig identifizieren kannst. Dann wird zwar ein reines FindWindow nicht mehr genügen, aber das Problem sollte dennoch meist lösbar sein, z.b., mit EnumWindows und prüfen von Teilen des Titels. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 Uhr. |
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