zoukankan      html  css  js  c++  java
  • Delphi监视进程并结束进程

    监视进程并结束进程在很多地方都用到这里借前人的经验写了个小例子:

    以QQ的进程qq.exe为例

    关键代码如下:


    function CheckTask(ExeFileName: string): Boolean;
    const
    PROCESS_TERMINATE=$0001;
    var
    ContinueLoop: BOOL;
    FSnapshotHandle: THandle;
    FProcessEntry32: TProcessEntry32;
    begin
    result := False;
    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 := True;
          ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
    end;
    end;

    function KillTask(ExeFileName:string):integer;
    const 
    PROCESS_TERMINATE = $0001; 
    var
    ContinueLoop: BOOLean;
    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;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     if CheckTask(’qq.exe’)=true then
    KillTask(’qq.exe’)
    else
    Label1.Caption:=’进程不存在,监视中...’;
    end;
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
     if CheckTask(’qq.exe’)=true then
    Label1.Caption:=’进程正在运行中...’
    else
    Label1.Caption:=’进程不存在,监视中...’;
    end;

    function CheckTask

    function KillTask这两个函数在网上找的,这个例子一看就懂的,下面给出测试效果:

  • 相关阅读:
    利用 windbg 脚本动态调试代码
    GetHotkeys 通过驱动获取系统热键 [ 顺便写了 SSDT + Shadow SSDT ]
    获取系统热键链表windbg脚本 GetHotkeys windbg script
    利用SetSysColor函数实现主题修改
    Javascript文件夹选择框的两种解决方案
    Javascript使用AjaxPro构建自动补全,同时自动生成待输行【原创】
    在UpdatePanel中弹出对话框
    JS动态创建表格比较【转】
    JS精美日历时间控件
    myeclipse快捷键大全【转】
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/4643093.html
Copyright © 2011-2022 走看看