Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Fenster Handle der Anwendung, die meine Anwendung aufgerufen hat? (https://www.delphipraxis.net/162798-fenster-handle-der-anwendung-die-meine-anwendung-aufgerufen-hat.html)

DelphiPeter 5. Sep 2011 19:13

Delphi-Version: 2007

Fenster Handle der Anwendung, die meine Anwendung aufgerufen hat?
 
Hallo Freunde!

Weiß jemand wie ich den Handle der Anwendung ermitteln kann, die meine Anwendung aufgerufen hat?

Wär super, wenn jemand eine hilfereiche Idee hat!


Peter

Christian Seehase 6. Sep 2011 20:53

AW: Fenster Handle der Anwendung, die meine Anwendung aufgerufen hat?
 
Moin Peter,

die Beschreibung ist jetzt nicht eindeutig:
Startest Du ein Programm und Du möchtest damit etwas anfangen, oder willst Du etwas über das Programm wissen, von dem aus Dein Programm gestartet wurde?
Im ersten Fall kannst Du das Programm mit CreateProcess starten und bekommst in der Process-Information ein Handle auf den Prozess und die ProcessID.

Im zweiten Fall kannst Du GetCurrentProcessID die ID Deines eigenen Prozesses ermitteln und mit folgender Funktion (Unit TlHelp32 einbinden)

Delphi-Quellcode:
function csGetParentProcessID(const AdwProcessID : DWORD;var AdwParentProcessID : DWORD) : boolean;

var
  hSnapshot : DWORD;
  pe32       : PROCESSENTRY32;

begin
  Result := false;
  hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  try
    FillChar(pe32,SizeOf(pe32),0);
    pe32.dwSize := SizeOf(pe32);
    if not Process32First(hSnapshot,pe32) then exit;
    while (pe32.th32ProcessID <> AdwProcessID) and Process32Next(hSnapshot,pe32) do;
    if pe32.th32ProcessID <> AdwProcessID then exit;
    AdwParentProcessID := pe32.th32ParentProcessID;
    Result := True;
  finally
    CloseHandle(hSnapshot);
  end;
end;
die ID des Programmes ermitteln, aus dem heraus Deines aufgerufen wurde.

Mit MSDN-Library durchsuchenGetTopWindow, MSDN-Library durchsuchenGetNextWindow und MSDN-Library durchsuchenGetWindowThreadProcessId solltest Du dann ein zugehöriges Fensterhandle ermitteln können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 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