有啊
uses
  shhell api
...
if handle=nil then 
exit else
shellexecute(handle,nil,pchar(Path/filename),nil,nil,sw_shownormal);

解决方案 »

  1.   

    shellexecute(handle,close,pchar(Path/filename),nil,nil,sw_shownormal);
      

  2.   

    当然用win32 api,有这个函数.
      

  3.   

    怎样监视调用的程序是否已经结束看看这个例子:function WinExecAndWait32(FileName:String; Visibility : integer):integer;
    var
    zAppName:array[0..512] of char;
    zCurDir:array[0..255] of char;
    WorkDir:String;
    tempResult :DWORD;
    StartupInfo:TStartupInfo;
    ProcessInfo:TProcessInformation;
    begin
    StrPCopy(zAppName,FileName);
    GetDir(0,WorkDir);
    StrPCopy(zCurDir,WorkDir);
    FillChar(StartupInfo,Sizeof(StartupInfo),#0);
    StartupInfo.cb := Sizeof(StartupInfo);
    StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
    StartupInfo.wShowWindow := Visibility;
    if not CreateProcess(nil,
    zAppName, { pointer to command line string }
    nil, { pointer to process security attributes }
    nil, { pointer to thread security attributes }
    false, { handle inheritance flag }
    CREATE_NEW_CONSOLE or { creation flags }
    NORMAL_PRIORITY_CLASS,
    nil, { pointer to new environment block }
    nil, { pointer to current directory name }
    StartupInfo, { pointer to STARTUPINFO }
    ProcessInfo) then Result := -1 { pointer to PROCESS_INF }
    else begin
    WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess,Result);
    Result := tempResult;
    end;
    end;