Einzelnen Beitrag anzeigen

mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Zwei Windows Explorer starten und nebeneinander bildschirmfüllend positionieren

  Alt 23. Jun 2015, 20:12
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
  Mit Zitat antworten Zitat