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这两个函数在网上找的,这个例子一看就懂的,下面给出测试效果:

时间: 2024-08-04 08:22:59

Delphi监视进程并结束进程的相关文章

Windows下查看8080进程及结束进程命令

Windows下查看进程及结束进程命令 1)查看占用8080端口的进程号 >netstat –aon | findstr “8080” 结果:TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       3500 可知,进程号为3500的进程占用了8080端口 可以使用命令 tasklist | findstr “3500”进一步查看3500进程的具体信息. > tasklist | findstr “3500” 结果

Windows下查看进程及结束进程命令

1)查看占用8080端口的进程号 >netstat –aon | findstr "8080" 结果:TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       3500 可知,进程号为3500的进程占用了8080端口 可以使用命令 tasklist | findstr "3500"进一步查看3500进程的具体信息. > tasklist | findstr "350

oracle查看进程并结束进程

select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object lo, dba_objects ao, v$session sess where ao.object_id = lo.object_id and lo.session_id = sess.sid; alter system kill session '35,

windows下如何查找相关的进程和结束进程

netstat -ano | findstr 8443 tasklist | findstr 3816 taskkill -PID 3816 -F 原文地址:https://www.cnblogs.com/han-guang-xue/p/10658358.html

C++结束进程 并能显示其父进程

声明:有些网友有可能在CSDN博客上看到过相同的文章,因为本人有两个账号...请不要误会,均为原创 这个程序功能强大哦~~ #include <cstdio> #include <windows.h> #include <winbase.h> #include <wtypes.h> #include <tlhelp32.h> #include <psapi.h> #include <tchar.h> #include &l

Linux查看和结束进程命令详解

在ubuntu中,终止一个进程或终止一个正在运行的程序,一般是通过 kill .killall.pkill.xkill 等进行. ------------------------------------------------------------------- 先看两个例子: 例子一:结束某个程序,如Firefox 键入命令: pkill firefox 例子二: 结束某个进程,如find 先用ps命令来查看该进程对应的PID. 键入ps,显示如下: PID TTY TIME COMMAND

taskkill 命令批量结束进程

taskkill /f /im PjtPkgWeightDlg.exe  结束进程 start "" "d:\PjtPkgWeightDlg.exe"  启动程序 在命令行下输入  taskkill /?  就能看到这个命令的一些介绍了. 命令语法: TASKKILL [/S system [/U username [/P [password]]]]         { [/FI filter] [/PID processid | /IM imagename] }

webdriver结束进程

使用webdriver做UI自动化测试,driver.quit();方法貌似没能起作用,执行完成后,还是一堆页面和进程在. 所以就只能简单粗暴地杀进程了 public void stop(){    driver.quit();  String name = null;  try {   name = getValue("driverName");  } catch (IOException e) {   // TODO Auto-generated catch block   e.p

Linux # Kubuntu 假死,结束进程方法

分析思路: 要知道运行了哪些进程,结束的目标进程是哪些,如何得到运行中的进程,需要哪些操作. 借助搜索引擎,搜索关键字:kconsole 列出进程,查询相关信息,文后参考链接 执行过程: ps aux 列出运行进程 (记录结束的目标进程的 pid,比如 firefox pid 为 22481) 或者 grep firefox ,将显示 22481,即为 pid 接着 kill 22481 ,即可. 备注: 这些命令详细介绍可以看下面链接 参考: Win/Mac/Linux(gnome|kde)