프로그래밍/델파이

Internet Explorer7 에서 현재 활성화 되있는 탭윈도우 핸들 얻기

채윤아빠 2009. 9. 19. 18:37
728x90
반응형
Internet Explorer7 에서 현재 활성화 되있는 탭윈도우 핸들 얻는 방법입니다.
아래는 C++ 코드입니다.
#include <shlguid.h>

HWND GetTabWnd(CComQIPtr<IWebBrowser2> spBrowser)
{
     HWND hwndTab = NULL;
     CComQIPtr<IServiceProvider> spServiceProvider = spBrowser;
     if (spServiceProvider != NULL)
     {
          CComQIPtr<IOleWindow> spWindow;
          if (SUCCEEDED(spServiceProvider->QueryService(
                         SID_SShellBrowser,
                              IID_IOleWindow,
                              (void**)&spWindow)))
          {
               spWindow->GetWindow(&hwndTab));
          }
     }
     return hwndTab;
}

아래는 델파이 코드입니다.
const
  SID_SShellBrowser: TGUID = '{000214E2-0000-0000-C000-000000000046}';
  IID_IOleWindow : TGUID = '{00000114-0000-0000-C000-000000000046}'; 

function GetTabWnd(spBrowser: IWebBrowser2): HWND;
var
    hwndTab: HWND;
    spServiceProvider: IServiceProvider;
    spWindow: IOleWindow;
begin
    spServiceProvider := spBrowser as IServiceProvider;
    if (SUCCEEDED(spServiceProvider.QueryService(SID_SShellBrowser,
					IID_IOleWindow, 
					spWindow) then
    begin
        spWindow.GetWindow(hwndTab);     
    end;

    result hwndTab;
end;