IWebBrowser2* pIWeb =
IServiceProvider* pServiceProvider = NULL;
if (SUCCEEDED(pIWeb->QueryInterface(
IID_IServiceProvider,
(void**)&pServiceProvider)))
{
IOleWindow* pWindow = NULL;
if (SUCCEEDED(pServiceProvider->QueryService(
SID_SShellBrowser,
IID_IOleWindow,
(void**)&pWindow)))
{
HWND hwndBrowser = NULL;
if (SUCCEEDED(pWindow->GetWindow(&hwndBrowser)))
{
// hwndBrowser is the handle of TabWindowClass
HWND hwnd = NULL;
hwnd = ::FindWindowEx(hwndBrowser,NULL,TEXT("Shell DocObject View"),NULL);
if (hwnd)
{
hIE = ::FindWindowEx(hwnd,NULL,TEXT("Internet Explorer_Server"),NULL);
}
}
pWindow->Release();
}
pServiceProvider->Release();
}
本文介绍了一种通过COM接口和服务提供者获取Internet Explorer浏览器窗口句柄的方法。具体步骤包括使用IWebBrowser2接口获取IServiceProvider接口,进而得到IOleWindow接口,并最终获取到浏览器窗口的句柄。此方法适用于需要与IE浏览器进行交互的应用程序开发。
1054

被折叠的 条评论
为什么被折叠?



