结束进程解决办法

结束进程
根据进程名称关闭进程

function KillTask(ExeFileName: string): Integer; 
const 
PROCESS_TERMINATE = $0001; 
var 
ContinueLoop: BOOL; 
FSnapshotHandle: THandle; 
FProcessEntry32: TProcessEntry32; 
begin 
Result := 0; 
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
FProcessEntry32.dwSize := SizeOf(FProcessEntry32); 
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); 

while Integer(ContinueLoop) <> 0 do 
begin 
  if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = 
  UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = 
  UpperCase(ExeFileName))) then 
  Result := Integer(TerminateProcess( 
  OpenProcess(PROCESS_TERMINATE, 
  BOOL(0), 
  FProcessEntry32.th32ProcessID), 
  0)); 
  ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); 
end; 
CloseHandle(FSnapshotHandle); 
end; 
哪位能给我讲一下,这段代码?
qq:44665376

------解决方案--------------------
这里只要是使用了好几个API函数!

function KillTask(ExeFileName: string): Integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
//CreateToolhelp32Snapshot创建进程的映射
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
//Process32First读取第一个进程信息,并把它保存到FProcessEntry32
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

//如果找到进程,则继续
while Integer(ContinueLoop) < > 0 do
begin
//根据要结束的进程名与当前FProcessEntry32结构里的名称比较,如果匹配
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
//TerminateProcess根据FProcessEntry32.th32ProcessID结束进程
Result := Integer(TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
BOOL(0),
FProcessEntry32.th32ProcessID),
0));
//Process32Next找下一个进程,如果找不到则返回0,退出循环
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
//释放资源
CloseHandle(FSnapshotHandle);
end;
------解决方案--------------------
楼主该从基础学起。

> FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
> 这些代码有些不明白?也找不到资料?

WIN32 API中有一些是作为结构的数据,传入前需要填写一些数据域,如上面的dwSize,就指该结构的大小(字节数)。

> function KillTask(ExeFileName: string): Integer;
> FProcessEntry32: TProcessEntry32;
> 这两句是什么意思呀,谁能帮解释一下?

第一句是Delphi中定义函数的语法。
第二句是定义变量的语法。
看一下Delphi的教程,都有。