Hallo,
die Idee als solches finde ich ja gut. Die Zähne beisse ich mir aber schon seit über einer Stunde daran aus, das "Sleep" zu ersetzen, weil es ja hardwareabhängig ist.
Der Grundgedanke ist, aus dem ProcessHandle das WindowHandle zu bekommen.
Delphi-Quellcode:
function ShellExecExplorer(aClientHandle: THandle;
aParameters: string;
var aExplorerHandle: THandle): Boolean;
var
SEI: TShellExecuteInfo;
begin
aExplorerHandle := 0;
FillChar(SEI, SizeOf(SEI), #0);
SEI.cbSize := SizeOf(SEI);
SEI.Wnd := aClientHandle;
SEI.fMask := SEE_MASK_NOCLOSEPROCESS;
SEI.lpVerb := 'open';
SEI.lpFile := PChar('explorer.exe');
SEI.lpParameters := PChar(aParameters);
SEI.lpDirectory := nil;
SEI.nShow := SW_SHOWNORMAL;
Result := ShellExecuteEx(@SEI);
if Result then begin
if SEI.hProcess > 32 then begin
Sleep(1000);
// WaitForInputIdle(SEI.hProcess, INFINITE); hab ich probiert, tut nicht
end;
end;
CloseHandle(SEI.hProcess);
end;
Vielleicht hat ja jemand eine Idee?
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen