Einzelnen Beitrag anzeigen

frieder2008

Registriert seit: 28. Feb 2009
78 Beiträge
 
#1

ShellExecAndWait nicht bei allen Windows XPs??

  Alt 24. Jun 2011, 09:06
Liebe Leute,

ich verwende folgende Proc aus der CodeLib, um ein ext. Programm zu starten und auf sein Ende zu warten. Das funktioniert bei meinem Win7 und auf einem Win2003-Serversystem auch problemlos. Nur bei anderen WinXPs funktionieren offenbar weder Parameterübergabe noch das Warten. Ich habe schon gegoogelt, aber leider keinen Hinweis gefunden. Jemand eine Idee?

Danke und schöne Grüße,
frieder

Delphi-Quellcode:
procedure ShellExecAndWait(dateiname: string; Parameter: string);
var executeInfo: TShellExecuteInfo;
dw: DWORD;
begin
    FillChar(executeInfo, SizeOf(executeInfo), 0);
    with executeInfo do
      begin
        cbSize := SizeOf(executeInfo);
        fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
        Wnd := GetActiveWindow();
        executeInfo.lpVerb := 'open';
        executeInfo.lpParameters := PChar(Parameter);
        lpFile := PChar(dateiname);
        nShow := SW_SHOWNORMAL;
      end;
      if ShellExecuteEx(@executeInfo) then
        dw := executeInfo.HProcess
      else begin
        ShowMessage('Fehler: ' + SysErrorMessage(GetLastError));
        Exit;
      end;
   while WaitForSingleObject(executeInfo.hProcess, 50) <> WAIT_OBJECT_0 do
        Application.ProcessMessages;
        CloseHandle(dw);
end;

// Aufruf z.B.:
ShellExecAndWait(extractfilepath(paramstr(0)) + '\tools\prog.exe', tempverz + '\config.ini');
  Mit Zitat antworten Zitat