如何将IE强制关闭!(100分)

  • 主题发起人 主题发起人 qn-wl
  • 开始时间 开始时间
Q

qn-wl

Unregistered / Unconfirmed
GUEST, unregistred user!
原来用findwindow来查窗口的标题拦,再用sendmessage关掉它,但IE的标题栏常常在变,
请问如何解决?
 
sendmessage(handle,wm_close,..);
 
在怎么变,Microsoft Internet Explorer 还是在的
 
用sendmessage要获的该窗口的句柄,
要获的窗口的句柄要用findwindow,
要用findwindow就要知道窗口的caption
但IE的caption不是固定的。这该怎么办?
 
查找名为 IExplore.exe 的进程,结束进程。
 
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
hCurrentWindow: HWnd;
szText: array[0..254] of char;
begin
ListBox1.Items.Clear;
hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);
i:=hCurrentWindow;
While hCurrentWindow <> 0 Do
Begin
If GetWindowText(hCurrentWindow, @szText, 255) > 0 Then begin
ListBox1.Items.add(Strpas(@szText));
if pos('Microsoft Internet Explorer',Strpas(@szText))>0 then
postmessage(hCurrentWindow,WM_SYSCOMMAND,SC_CLOSE,0);
end;
hCurrentWindow := GetNextWindow(hCurrentWindow, GW_HWNDNEXT);
End;
end;
 
多人接受答案了。
 
按照kingdeezj的方法能将IE关闭,但从我的电脑或资源管理器中写入网址上网的话是关不
掉的,这和怎么办?
 
这个可不好办:(
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI, TLHelp32;

type
TProcessInfo = record
ExeFile: string;
ProcessId: DWORD;
end;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure TerminateAProcess(ProcessExeName: String);
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.TerminateAProcess(ProcessExeName:String);
var
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
Ret : BOOL;
h : THandle;
p : TPRocessInfo;
a : Cardinal;
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

FProcessEntry32.dwSize:=Sizeof(FProcessEntry32); //创建系统快照
Ret:=Process32First(FSnapshotHandle,FProcessEntry32); //先初始化 FProcessEntry32 的大小
while Ret do
begin
p.ExeFile:=FProcessEntry32.szExeFile;
p.ProcessId := FProcessEntry32.th32ProcessID;
if LowerCase(p.ExeFile)=LowerCase(ProcessExeName) then //你要修改的exe文件名
break;
Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);

h := openProcess(Process_All_Access, true, p.ProcessID);
GetExitCodeProcess(h, a); //循环枚举出系统开启的所有进程,找出进程
TerminateProcess(h, a);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TerminateAProcess('taskmgr.exe');
end;

end.
 
后退
顶部