本人最近正在做一系统控制类软件,急需进程控制代码,希望各同盟帮助(50分)

  • 主题发起人 主题发起人 nmyhu
  • 开始时间 开始时间
N

nmyhu

Unregistered / Unconfirmed
GUEST, unregistred user!
此软件主要用在局域网间,分为主控端和被控端,主控端不仅可以查看本机进程和管理,如开启.关闭进程,最主要的是可以开关被控端的进程,我现在只写出了查看进程之代码,可如果关闭某一进程不知怎么实现,望各位同盟帮助,真的是急用啊。。。
 
function KillTask(ExeFileName: string): Integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
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;
end;
 
还有一小小问题:
我所获取的当前进程列表是列在listbox当中的,我想实现选中其中的那一进程,然后"关闭"即可关闭此进程,请问有关listbox中的有关代码应该怎么样去写呢?
 
ListBox 中保存的 字符串 是什么?
如果是文件名(XXX.exe)直接调用那个函数即可。
不过,更好的办法,您可以在枚举的时候用一个,
数组记录下每个进程的句柄,和listbox里面一一对应。
这样直接关闭就可以了,不用再遍历一次,效率高。
这样即可:
TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),进程ID), 0));
==================================================================
参考这里代码 : http://www.2ccc.com/article.asp?articleid=992
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部