var
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
procedure Run(App:String);
var
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb:=Sizeof(StartupInfo);
StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
if FileExists(GetPath(2)+'\'+App) then
CreateProcess(nil,pchar(GetPath(2)+'\'+App),nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo,ProcessInfo);
end;
下面是我的一个例子函数。
function TerminateExe(ExePath:String):Boolean; 一个结束例子进程的例子
var
ProListHandle,ProHandle:HWND;
ProStruct:PROCESSENTRY32; //目的就是要得到这结构,关于这结构可以查API帮助。
Found:Boolean;
begin
Result:=False;
ProListHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
ProStruct.dwSize:=Sizeof(ProStruct);
Found:=Process32First(ProListHandle,ProStruct);开始枚举所有进程
While Found do
begin
{ ProStruct 结构中就包含了进程的详细信息,其中的进程ID就是ProStruct.th32ProcessID
这个成员。}
if ProStruct.szExeFile=UpperCase(ExePath) then
begin
ProHandle:=OpenProcess(PROCESS_ALL_ACCESS,True,ProStruct.th32ProcessID);
If TerminateProcess(ProHandle,0) then
Result:=True
else
Result:=False;
end;
Found:=Process32Next(ProListHandle,ProStruct);
end;
end;