Announcement

Collapse
No announcement yet.

ShellExecute: "Erfolg?" bzw. "Wann abgeschlossen"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ShellExecute: "Erfolg?" bzw. "Wann abgeschlossen"

    Hallo,
    mein Programm soll dies tun, was bilslang nur über eine Notlösung funktioniert:

    - Starte Programm XYZ parallel zu meiner Anwendung

    - Positioniere XYZ auf dem Desktop neben meiner Anwendung

    Mein Problem, nach shellexecute hab ich keine Ahnung wann und ob das Programm gestartet wurde. Führe ich direkt eine Positionierung durch, funktioniert es nicht, weil ich eigentlich kurz warten müßte.

    a) Ich müßte wissen, ob ShellExecute überhaupt etwas starten konnte.

    b) Ich müßte wissen wann der Startvorgang abgeschlossen ist. Falls möglich ohne Warteschleife, da die sonst einen Timeout bräuchte.

    Gibt es eventuell eine Alternative zu ShellExecute (CreateProcess???).

    :-)

  • #2
    Ok,

    den "Erfolg" kann ich nun über den Rückgabewert ermitteln: <=32 -> Fehler

    Problem zwei besteht noch..

    Comment


    • #3
      <PRE>
      function WinExec32(const Cmd: string; const CmdShow: Integer): Boolean;
      var
      StartupInfo: TStartupInfo;
      ProcessInfo: TProcessInformation;
      begin
      FillChar(StartupInfo, SizeOf(TStartupInfo), #0);
      StartupInfo.cb := SizeOf(TStartupInfo);
      StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
      StartupInfo.wShowWindow := CmdShow;
      Result := CreateProcess(nil, PChar(Cmd), nil, nil, False,
      NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo);
      if Result then
      begin
      WaitForInputIdle(ProcessInfo.hProcess, INFINITE);
      CloseHandle(ProcessInfo.hThread);
      CloseHandle(ProcessInfo.hProcess);
      end;
      end;
      </PRE>

      Aus der Jedi Code Library

      Comment


      • #4
        Danke, werde ich testen :-

        Comment

        Working...
        X