Этот код ниже не закрывает вкладку в Internet Explorer 8. Если я отправляю команду wm_close на Wnd, это закрывает Internet Explorer, но я хочу закрыть текущую вкладку не весь 'ieframe'. FindWindowEX (Wnd, 0, 'Вкладка Кадра', ноль) предположил для перенастройки дескриптора т.е. кадра? Если да, почему это не закрывает текущую вкладку в Internet Explorer?
var
Wnd, WndChild : hwnd;
begin
Wnd := FindWindow('IEFrame', nil);
WndChild := FindWindowEX(Wnd, 0, 'Frame Tab', nil);
postmessage(WndChild, wm_close, 0, 0);
end;
Вы пропустили 1 слой, саму вкладку, кроме этого, все в порядке ..
var
Wnd, WndChild: THandle;
begin
Wnd := FindWindow('IEFrame', nil); // Top most IE
if Wnd > 0 then
begin
WndChild := FindWindowEx(Wnd, 0, 'Frame Tab', nil); // Tabs holder
if WndChild > 0 then
begin
WndChild := FindWindowEX(WndChild, 0, 'TabWindowClass', nil); // top most tab
if WndChild > 0 then
if PostMessage(WndChild, WM_CLOSE, 0, 0) then
ShowMessage('Close request succeeded...')
else
ShowMessage('Failed!');
end
else
// not tabbed, close IE
if PostMessage(Wnd, WM_CLOSE, 0, 0) then
ShowMessage('Close request succeeded...')
else
ShowMessage('Failed!');
end
else
ShowMessage('No IE');
end;
var
hie,
hftab,
htab : DWORD;
begin
hie := FindWindow('IEFrame', nil);
hftab := FindWindowEx(hie, 0, 'Frame Tab', nil);
htab := FindWindowEX(hftab, 0, 'TabWindowClass', nil);
PostMessage(htab, WM_CLOSE, 0, 0);
CloseHandle(hie);
end;`
Структура окна IE8 показана на скриншоте ниже
alt text http://img171.imageshack.us/img171/6702/captureids. png