Fish:
介个不是普通程序当service。不过守护服务的事情么,俺原来尝试这么做
[阅读: 562] 2006-06-29 02:41:00
// 这是俺用来启动新进程的函数
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程序,执行这些就可以