zoukankan      html  css  js  c++  java
  • 通过进程名或模块名来杀进程

    unit KillProcess;

    interface

    uses
    Windows, SysUtils, Forms, Controls, StdCtrls, Classes, TlHelp32;

    function KillByProcessNameOrModuleName(ProcessNameOrModuleName: string):Boolean;
    function KillByProcessName(ProcessName: string):Boolean;

    implementation

    function KillByProcessNameOrModuleName(ProcessNameOrModuleName: string):Boolean;
    function ModuleEnum(processid:Dword):boolean;
    var
    ModuleList :Thandle;
    pm :TMODULEENTRY32;
    foundModule:boolean;
    begin
    Result:
    =False;
    ModuleList :
    = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,processID);
    pm.dwSize:
    =sizeof(TMODULEENTRY32);
    foundModule:
    =module32first(ModuleList,pm);
    while integer(foundModule)<>0 do begin
    if pos(UpperCase(pm.szModule),UpperCase(ProcessNameOrModuleName))>0 then begin
    Result:
    =True;
    exit;
    end;
    foundModule:
    =Module32Next(ModuleList,pm);
    end;
    closehandle(ModuleList);
    end;
    var
    Found: boolean;
    HProcess,HSnapshot: THandle;
    appe: TProcessEntry32;
    begin
    Result :
    = False;
    HSnapshot :
    = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    appe.dwSize :
    = SizeOf(appe);
    Found :
    = Process32First(HSnapshot, appe);
    while Integer(Found) <> 0do begin
    if ModuleEnum(appe.th32ProcessID) then begin
    try
    HProcess :
    = OpenProcess(PROCESS_ALL_ACCESS, True, appe.th32ProcessID);
    TerminateProcess(HProcess,
    0);
    Result :
    = True;
    except
    Result :
    = False;
    end;
    end;
    Found :
    = Process32Next(HSnapshot, appe);
    end;
    CloseHandle(HSnapshot);
    end;

    function KillByProcessName(ProcessName: string):Boolean;
    var
    s:
    string;
    Found: boolean;
    HProcess,HSnapshot: THandle;
    appe: TProcessEntry32;
    begin
    Result :
    = False;
    HSnapshot :
    = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    appe.dwSize :
    = SizeOf(appe);
    Found :
    = Process32First(HSnapshot, appe);
    while Integer(Found) <> 0do begin
    s :
    = appe.szExeFile;
    if UpperCase(s) = UpperCase(ProcessName) then begin
    try
    HProcess :
    = OpenProcess(PROCESS_ALL_ACCESS, True, appe.th32ProcessID);
    TerminateProcess(HProcess,
    0);
    Result :
    = True;
    except
    Result :
    = False;
    end;
    end;
    Found :
    = Process32Next(HSnapshot, appe);
    end;
    CloseHandle(HSnapshot);
    end;

    end.
  • 相关阅读:
    (教程)怎么避免拼多多比价订单行为
    Ubuntu下搭建apache2+GGI环境
    搭建k8s
    我的2021年总结
    工作三年的一些感悟
    xshell6+xftp6免安装破解版
    centos7启动docker容器时提示Error response from daemon: Unknown runtime specified dockerrunc
    解决一个C#中定时任务被阻塞问题
    工程中实际问题解决两例——基于C#
    解决一次gitlab因异常关机导致启动失败
  • 原文地址:https://www.cnblogs.com/jxgxy/p/1340570.html
Copyright © 2011-2022 走看看