// 这是俺用来启动新进程的函数
function ExecuteExeFile( const FileName, Params, DefaultDir : string; ShowCmd : Integer ) : Boolean;
var
  zFileName, zParams, zDir : array[ 0..200 ] of Char;
  lpStartupInfo : TStartupInfo;
  lpProcessInformation : TProcessInformation;
begin
  FillChar(lpStartupInfo, Sizeof(TStartupInfo), #0);
  lpStartupInfo.cb := Sizeof(TStartupInfo);
  lpStartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  lpStartupInfo.wShowWindow := ShowCmd;
  Result := CreateProcess( StrPCopy( zFilename, Filename ), StrPCopy( zParams, Params ),
    nil, nil, False, 0, nil, StrPCopy( zDir, DefaultDir ), lpStartupInfo, lpProcessInformation );
end;
// 这是俺的 onServiceStart 里面的部分代码
// 之前,从 ini 里面读取了若干个程序的路径,放在 Apps[] 数组里
// AppCount 是数量
  for i := 0 to AppCount - 1 do
  begin
    LogMsg( sLogFilename, 'Starting application of : ' + Apps[ i ] );
    // h := ExecuteFile( Apps[ i ], '', ExtractFilePath( Apps[ i ] ), SW_MINIMIZE );
    if ExecuteExeFile( Apps[ i ], '', ExtractFilePath( Apps[ i ] ), SW_MINIMIZE ) then
      LogMsg( sLogFilename, 'Starting Result : Successed' )
    else
      LogMsg( sLogFilename, 'Starting Result : Not successed' );
  end;
以上代码很奇怪,在俺测试的时候不行,写个GUI程序,执行这些就可以					
大家都是出来卖的,何苦自己人为难自己人
那些活好的,或者活新的,或者花样多的,
或者老板拉皮条功夫好能拉到肯多花钱的客的,
拜托不要老是打击年老色衰的同行了
老鱼记事   老鱼侃棋   老鱼围脖