procedure TForm1.Button3Click(Sender: TObject);
var
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
FillChar(ProcessInfo, sizeof(TProcessInformation),0);
FillChar(StartupInfo,Sizeof(TStartupInfo),0);
StartupInfo.cb := Sizeof(TStartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_HIDE;
If CreateProcess('test.exe',nil,nil,nil,False,NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo,ProcessInfo) then
   begin
     waitForSingleObject(ProcessInfo.hProcess,Infinite);
     CloseHandle(ProcessInfo.hProcess);
   end;
end;

解决方案 »

  1.   

    up
    这test.txt是一个命令行执行的exe文件,不是窗体
      

  2.   

    没指定目录?
    用GetLastOSError发现问题的
      

  3.   

    //CreateProcess,创建进程
    procedure TForm1.Button3Click(Sender: TObject);
    var
    StartupInfo:TStartupInfo;
    ProcessInfo:TProcessInformation;
    begin
    FillChar(ProcessInfo, sizeof(TProcessInformation),0);
    FillChar(StartupInfo,Sizeof(TStartupInfo),0);
    StartupInfo.cb := Sizeof(TStartupInfo);
    StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
    StartupInfo.wShowWindow := SW_HIDE;
    If CreateProcess('test.exe',
    nil,
    nil,
    nil,
    False,
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo) then
    begin
    waitForSingleObject(ProcessInfo.hProcess,Infinite);
    CloseHandle(ProcessInfo.hProcess);
    end
    end;......>>SW_HIDE;
    可能有,你没发现而已
      

  4.   

    没有,我这个test.exe是会打印出一个文本文件的,单独执行test.exe是对的
      

  5.   

    这会可以了,谢谢 aiirii(ari-http://spaces.msn.com/members/aiirii/) 
    可是如果我想执行这个程序,在后台执行,
    然后等这个程序完成了,再给出提示,改怎么做呢?谢谢