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
GetTopWindow,
GetNextWindow und
GetWindowThreadProcessId solltest Du dann ein zugehöriges Fensterhandle ermitteln können.