我正在尝试从服务中提取当前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模拟登录用户,但这不起作用。
任何想法?