请问如何关闭当前正在运行的所有程序!(100分)

  • 主题发起人 主题发起人 delphiplayer
  • 开始时间 开始时间
D

delphiplayer

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何关闭当前正在运行的所有程序!closeall
 
用EnumWindowsProc函数查到所有窗口,再给每个窗口发送close消息!
 
一时想不起来了,有个简单办法,记得好像是关闭和IE有关的一个东西,就行了。
其实就一句话。
但就是想不起来了。
 
不是所有窗体,是所有进程,然后
循环着 去
try
//killproc;
except
raise;
end;
 
关闭所有正在运行的程序
(运行此程序前请保存所有修改过的文件)
procedure TForm1.ButtonKillAllClick(
Sender: TObject);
var
pTask : PTaskEntry;
Task : Bool;
ThisTask: THANDLE;
begin
GetMem (pTask, SizeOf (TTaskEntry));
pTask^.dwSize := SizeOf (TTaskEntry);
Task := TaskFirst (pTask);
while Task do
begin
if pTask^.hInst = hInstance then
ThisTask := pTask^.hTask
else
TerminateApp (pTask^.hTask, NO_UAE_BOX);
Task := TaskNext (pTask);
end;
TerminateApp (ThisTask, NO_UAE_BOX);
end;



也可以参考以下方法:
85. 获得进程列表,并终止 Excel 进程
procedure TForm1.Button1Click(Sender: TObject);
var
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
Ret : BOOL;
ProcessID : integer;
s:string;
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
Ret:=Process32First(FSnapshotHandle,FProcessEntry32);
Memo1.clear;
while Ret do
begin
Memo1.lines.add(FProcessEntry32.szExeFile);
s:=ExtractFileName(FProcessEntry32.szExeFile);
if s='EXCEL.EXE' then
begin
ProcessID:=FProcessEntry32.th32ProcessID;
TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,ProcessID),1);
s:='';
end;
Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;

 
接受答案了.
 
后退
顶部