как закрыть вкладки ie8 - PullRequest
5 голосов
/ 15 мая 2010

Этот код ниже не закрывает вкладку в Internet Explorer 8. Если я отправляю команду wm_close в Wnd, она закрывает Internet Explorer, но я хочу закрыть текущую вкладку, а не весь «ieframe». Должен ли FindWindowEX (Wnd, 0, 'Frame Tab', nil) возвращать дескриптор к ie frame? Если да, почему он не закрывает текущую вкладку в 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;

Ответы [ 2 ]

6 голосов
/ 15 мая 2010

Вы пропустили 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;
0 голосов
/ 15 мая 2010
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 показана на скриншоте ниже

альтернативный текст http://img171.imageshack.us/img171/6702/captureids.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...