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 Handle einer MainForm erhalten (https://www.delphipraxis.net/76075-handle-einer-mainform-erhalten.html)

Martin K 29. Aug 2006 14:41


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:
var AppHandle: HWND;
begin
  AppHandle := FindWindow(nil, 'Name meiner Anwendung');
  if AppHandle <> 0 then
    //...
Ich weiß zwar, dass ich so das Handle einer Form erhalten kann:
Delphi-Quellcode:
var FrmHandle: HWND;
begin
  FrmHandle := FindWindowEx(0, 0, nil, 'Titel meiner Form');
  if FrmHandle <> 0 then
    //...
...aber wie gesagt, kenne ich den Titel meiner Form nicht bzw. dieser kann sich ständig ändern und ist somit nicht eindeutig.

RavenIV 29. Aug 2006 14:43

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.

Martin K 29. Aug 2006 14:48

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!

mkinzler 29. Aug 2006 14:53

Re: Handle einer MainForm erhalten
 
Delphi-Quellcode:
self.Handle

Martin K 29. Aug 2006 14:59

Re: Handle einer MainForm erhalten
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
self.Handle

Nene, das Handle der MainForm einer bestimmten Application, NICHT meiner eigenen.
Also ein fremdes Programm!

RavenIV 29. Aug 2006 15:17

Re: Handle einer MainForm erhalten
 
eher so:
Delphi-Quellcode:
myHandle := FindWindow('TEineBestimmteForm', nil);
so kannst Du sagen, dass Du das Handle des Fensters willst, das von der "EineBestimmteForm" abstammt. Der Titel des Fensters ist dann egal.

Martin K 29. Aug 2006 15:33

Re: Handle einer MainForm erhalten
 
Ja, so funktioniert's, Danke :thumb:
Delphi-Quellcode:
var FrmHandle: HWND;
begin
  FrmHandle := FindWindow('TForm1', nil);
Allerdings funzt es nach ein paar Mal nicht mehr, erst wenn ich die Anwendung dann wieder neu starte :gruebel:
Aber das wird ich bestimmt irgendwie noch in den Griff bekommen...

Martin K 31. Aug 2006 13:50

Re: Handle einer MainForm erhalten
 
Zitat:

Zitat von Martin K
Allerdings funzt es nach ein paar Mal nicht mehr, erst wenn ich die Anwendung dann wieder neu starte :gruebel:
Aber das wird ich bestimmt irgendwie noch in den Griff bekommen...

Jetzt habe ich das Problem gelöst:
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!

Christian Seehase 31. Aug 2006 13:57

Re: Handle einer MainForm erhalten
 
Moin Martin,

Zitat:

Zitat von Martin K
Besser ist es, hier einen eindeutigen Namen für die Form zu nehmen!

Das ist zwar richtig, nutzt Dir aber nichts, wenn Du eine fremde Anwendung ansprechen willst, da es ja reichlich Programme geben kann, die die den gleichen Namen für die Fensterklasse benutzen.

Martin K 31. Aug 2006 14:02

Re: Handle einer MainForm erhalten
 
naja, es war schon eine von mir programmierte Anwendung.
Oder was meinst du jetzt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 Uhr.
Seite 1 von 2  1 2      

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