从服务获取当前Internet Explorer网页的URL

时间:2015-12-16 15:29:39

标签: c++ internet-explorer visual-c++ service msdn

我正在尝试从服务中提取当前Internet Explorer网页的URL。 我尝试使用CLSID_ShellWindows,代码如下:

CoCreateInstance(CLSID_ShellWindows, NULL, CLSCTX_ALL, IID_IShellWindows, (void **)& pIShellWindows);
long count;
pIShellWindows->get_Count(&count);
for (int i = 0; i < count; i++)
{
    VARIANT vt;
    VariantInit(&vt);
    vt.vt = VT_I4;
    vt.lVal = i;
    hr = pIShellWindows->Item(vt, &pIDispatch);
    if (SUCCEEDED(hr) && (pIDispatch != NULL))
    {
        // "Dispatch success"         
        IWebBrowser2 *tab = NULL;
        hr = pIDispatch->QueryInterface(IID_IWebBrowser2, (void **)&tab); 
        BSTR bstr;
        tab->get_LocationURL(&bstr);
     }
}

代码适用于用户应用(非服务)。这可能是因为服务和用户应用程序在不同的会话(LocalSystem)中运行。

我尝试使用ImpersonateLoggedOnUser模拟登录用户,但这不起作用。

任何想法?

0 个答案:

没有答案