Unit Unit1;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
Type
TForm1 = Class(TForm)
Memo1: TMemo;
Button1: TButton;
Timer1: TTimer;
Procedure Button1Click(Sender: TObject);
Procedure Timer1Timer(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
End;
Var
Form1: TForm1;
piProcInfoGPS:PROCESS_INFORMATION;
Implementation
{$R *.DFM}
{ TForm1 }
Procedure EstablishProcess;
Var
siStartupInfo: STARTUPINFO;
saProcess, saThread: SECURITY_ATTRIBUTES;
fSuccess: boolean;
Begin
fSuccess := false;
ZeroMemory(@siStartupInfo, sizeof(siStartupInfo));
siStartupInfo.cb := sizeof(siStartupInfo);
saProcess.nLength := sizeof(saProcess);
saProcess.lpSecurityDescriptor := PChar(Nil);
saProcess.bInheritHandle := true;
saThread.nLength := sizeof(saThread);
saThread.lpSecurityDescriptor := PChar(Nil);
saThread.bInheritHandle := true;
fSuccess := CreateProcess(PChar(Nil), ‘c:\c\Eppalr33‘, @saProcess, @saThread, false,
CREATE_DEFAULT_ERROR_MODE, Pchar(Nil), Pchar(Nil), siStartupInfo, piProcInfoGPS);
If (Not fSuccess) Then
Form1.Memo1.Lines.Add(‘Create Process Eppalr33 fail.‘)
Else
Form1.Memo1.Lines.Add(‘Create Process Eppalr33 success.‘)
End;
Procedure TForm1.Button1Click(Sender: TObject);
Begin
EstablishProcess;
End;
Procedure TForm1.Timer1Timer(Sender: TObject);
Var
dwExitCode: DWORD;
fprocessExit: boolean;
Begin
dwExitCode := 0;
fprocessExit := false;
fprocessExit := GetExitCodeProcess(piProcInfoGPS.hProcess, dwExitCode);
If (fprocessExit And (dwExitCode <> STILL_ACTIVE)) Then
Begin
Memo1.Lines.Add(‘SR350buff.exe进程终止‘);
CloseHandle(piProcInfoGPS.hThread);
CloseHandle(piProcInfoGPS.hProcess);
EstablishProcess;
End;
End;
End.