比如我调用shellexecute(....WIN下的计算器,...)
但我在关闭程序时,计算器还仍旧存在,这可不好。怎么关掉它,有没有简单点的?
我指定是计算器了。最好别用KILL进程什么的
但我在关闭程序时,计算器还仍旧存在,这可不好。怎么关掉它,有没有简单点的?
我指定是计算器了。最好别用KILL进程什么的
解决方案 »
- 各位哥哥姐姐帮帮小弟啊
- 如何获取选中的数据
- 怎样设计一个指向数组的指针,谁能帮我设计一个吗,数组类型为byte,或char,或integer都可
- ListView怎样实现标题多行显示
- EHGrid排序的问题?
- 在ComboBox上面presskey
- 请教:约20万条记录的单机用哪种数据库较好?谢谢!
- Windows 2000 下怎么得到密码输入框里的密码
- 救命了!!!!!!!!(在线!)
- table1.post是用来将表内修改的数据进行保存,请问:用sql怎样才能实现将查找到的数据经过修改过也能保存呢?
- Delphi产品专家为什么没有Windows优化大师的作者???
- 用FOR循环给成批给控件属性赋值的进一步问题?
PROCESS_TERMINATE = $0001;
var
ProcessHandle : THandle;
ProcessID: Integer;
TheWindow : HWND;
begin
TheWindow := FindWindow(nil, '计算器');
GetWindowThreadProcessID(TheWindow, @ProcessID);
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
TerminateProcess(ProcessHandle,4);
end;
TerminateProcess(ProcessHandle,4);的方法不是很安全吧。:)
TheWindow := FindWindow(nil, '计算器');是查找窗口标题栏叫计算器的,还是程序名,还是什么?
var
TheWindow : HWND;
begin
TheWindow := FindWindow(nil, '计算器');
PostMessage(TheWindow,WM_CLOSE,0,0);
end;
var
TheWindow : HWND;
begin
TheWindow := FindWindow(nil, '计算器');
if TheWindow <> 0 then
PostMessage(TheWindow,WM_CLOSE,0,0);
end;
var
lppe: TProcessEntry32;
found : boolean;
Hand : THandle;
begin
Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
found := Process32First(Hand,lppe);
while found do
begin
if UpperCase(StrPas(lppe.szExeFile)) = UpperCase(AExeName) then
begin
TerminateProcess(OpenProcess(PROCESS_TERMINATE, true,
lppe.th32ProcessID), 0);
Exit;
end
else
found := Process32Next(Hand,lppe);
end;
end;
再麻烦你一下,我想KILL掉不知名的进程怎么办呢?如果是用户任意打开的呢