根据进程名称关闭进程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

解决方案 »

  1.   

    这里只要是使用了好几个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;  
      

  2.   

    我刚学delphi,看这些代码,有点生硬,不知,楼上的朋友,能不能加我qq?
      

  3.   

    function KillTask(ExeFileName: string): Integer;   
    const   
    PROCESS_TERMINATE = $0001;   
    var   
    ContinueLoop: BOOL;   
    FSnapshotHandle: THandle;   
    FProcessEntry32: TProcessEntry32;   
    begin   
    Result := 0; 
    FProcessEntry32.dwSize := SizeOf(FProcessEntry32);   
    这些代码有些不明白?也找不到资料?
      

  4.   

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

  5.   

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

  6.   

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

  7.   

    楼主该从基础学起。> FProcessEntry32.dwSize := SizeOf(FProcessEntry32);   
    > 这些代码有些不明白?也找不到资料?WIN32 API中有一些是作为结构的数据,传入前需要填写一些数据域,如上面的dwSize,就指该结构的大小(字节数)。> function KillTask(ExeFileName: string): Integer;
    > FProcessEntry32: TProcessEntry32;   
    > 这两句是什么意思呀,谁能帮解释一下?第一句是Delphi中定义函数的语法。
    第二句是定义变量的语法。
    看一下Delphi的教程,都有。