如题

解决方案 »

  1.   

    function  MyFun_GetProcessID(ProcessName:  string):  Cardinal;  
    var  
       FSnapshotHandle:  THandle;  
       FProcessEntry32:  TProcessEntry32;  
       Ret:  Boolean;  
       TmpProcessName:  string;  
       TmpProcessID:  DWORD;  
    begin  
       TmpProcessID  :=  0;                                        //如果没有找到  
       //创建系统快照  
       FSnapshotHandle  :=  CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,  0);  
       //先初始化  FProcessEntry32  的大小  
       FProcessEntry32.dwSize  :=  SizeOf(FProcessEntry32);  
       Ret  :=  Process32First(FSnapshotHandle,  FProcessEntry32);  
       //循环枚举出系统开启的所有进程,找出“ProcessName”所指定的进程  
       while  Ret  do  
       begin  
           TmpProcessName  :=  ExtractFileName(FProcessEntry32.szExeFile);  
           if  TmpProcessName  =  ProcessName  then  
           begin  
               TmpProcessID  :=  FProcessEntry32.th32ProcessID;  
               Break;  
           end;  
           Ret  :=  Process32Next(FSnapshotHandle,  FProcessEntry32);  
       end;  
       CloseHandle(FSnapshotHandle);  
       Result  :=  TmpProcessID;  
    end;  
     
    function  KillExe(strFileName:string):Boolean;  
    var  
       ProcessID:  THandle;  
       FHandle:  THandle;  
    begin  
       ProcessID  :=  MyFun_GetProcessID(strFileName);  
       FHandle  :=  OpenProcess(PROCESS_ALL_ACCESS            ,False,ProcessID);  
       Result  :=  TerminateProcess(FHandle,0);  
     
    end;  
     
    通过调用KillExe就能关闭了,传入参数为进程的EXE名字