问题很简单:
提取EXE或DLL的唯一性征,检测“Windows任务管理器”的“进程”列表中的进程对应的EXE或DLL是否符合这一性征,如果符合则杀掉此进程。说明:
1、不要说使用FindWindow
2、不以进程“映象名称”等为依据
3、任意的EXE或DLL
解决方案 »
- 关于调用函数出错的问题
- 在delphi中,怎样避免SQL Server数据表关键字段重复记录的提交
- 急急急,在线等。。。。。。分不够再加
- 用两层结构+SQLServer2000可以实现网络存储可以吗?
- 在一个目录下的doc、jpg文件批量录入到access的MDB数据库。
- 高手请帮帮忙啊!!!
- 不知道pascal的3句程序可不可以在这个贴子上问???
- 没用过ADO,用过的来帮个忙
- 哪有《The Tomes of Delphi:Algorithms and Data Structures》
- 寻求delphi6的详细介绍资料,哪里有,越细越好,谢谢
- 在delphi中如何向excel中插入ole对象
- 真是伤心,csdn怎么成了书市了!
2)通过名,访问Exe/Dll文件
3)计算CRC32,这就可以认为是唯一ID
4)Crc32=某个值,杀之http://lysoft.7u7.net
Function KillProcess(FileName : String) : Boolean;
var
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
ProcessID : integer;
ProcessHndle : THandle;
Ret , Ret1 : BOOL;
S : String;
begin
Result := False;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
Ret:=Process32First(FSnapshotHandle,FProcessEntry32);
while Ret do begin
S := Trim(AnsiUpperCase(FProcessEntry32.szExeFile));
if S=AnsiUpperCase(FileName) then begin
ProcessID := FProcessEntry32.th32ProcessID;
ProcessHndle:=OpenProcess(PROCESS_TERMINATE,BOOL(0),ProcessID);
Ret1 := False;
Try
Ret1 := TerminateProcess(ProcessHndle,0);
except
end;
if Ret1 then Result := True;
Break;
end;
Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
kiboisme:
这个方法我知道,不过不是我要的,谢谢ly_liuyang:
我说的就是这个意思!计算CRC32没问题。
不过有一点:通过“映象名称”如何能得知文件的完整路径?请指教,多谢
IntToStr(GetWindowThreadProcessId(hCurrentWindow, @ident));
myhandle := OpenProcess(PROCESS_TERMINATE, False, ident);
TerminateProcess(myhandle, 0);
根据EXE名称,找进程ID。
通过API TerminateProcess(进程ID, 0);