如何关闭一个IE窗口?sendmessage(hwd,wm_close,0,0);不起作用 (100分)

  • 主题发起人 主题发起人 buff
  • 开始时间 开始时间
B

buff

Unregistered / Unconfirmed
GUEST, unregistred user!
如何关闭一个IE窗口?sendmessage(hwd,wm_close,0,0);不起作用
 
起作用的。
你的句柄抓的对不对,把代码贴出来看看。
 
起作用的
hwd是空么?或者其他的?
 
用这个呢?

uses ComObj,ShellAPI;

procedure CloseIE;
var
WinHandle : HWnd;
begin
WinHandle := FindWindow('IEFrame', nil);
if WinHandle <> 0 then postmessage(winHandle,wm_close,0,0);
end;
 
procedure Closeie
var
DDE:TDDEClientConv;
begin
DDE:=TDDEClientConv.Create(nil);
Try
While DDE.SetLink('iexplore','WWW_Exit') do
DDE.PokeData('anything' ,'anything');
Finally
DDE.Free;
End;
end;
 
首先句柄抓对!第二,用POSTMESSAGE
 
我用的:
var hwd : Hwnd;
begin

hwd := Findwindow('IEFrame',nil);
setActiveWindow(hwd); //这时候IE为活动的窗口
if hwd>0 then
PostMessage(hwd,wm_close,0,0); //ie窗口没有关闭
en,
 
多给它PostMessage几次就可以关了。
这是我写的C程序

#include <windows.h>
#include <string.h>
#include <stdio.h>

int main()
{
HWND hCurrent;
char temp[255];
hCurrent= FindWindow("IEFrame",NULL);
while(hCurrent)
{
printf("Find IE./n");
PostMessage(hCurrent,WM_CLOSE,0,0);
Sleep(50);
hCurrent=FindWindow("IEFrame",NULL);
}
}
 
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
hCurrentWindow: HWnd;
szText: array[0..254] of char;
hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);
i:=hCurrentWindow;
While hCurrentWindow <> 0 Do Begin
If GetWindowText(hCurrentWindow, @szText, 255) > 0 Then
begin
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 说的应该是正解!
 
学习。:)
 
后退
顶部