Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 6. Sep 2011, 20:53
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat