描述:
开发系统服务时,不能与桌面交互,后来加入了与桌面交互的部分,可以在桌面看见窗口。
但是在使用iwebbrowser时出错,具体代码如下:
int SysCallMainFunc( )
{
DWORD dwThreadId;
HWINSTA hwinstaSave;
HDESK hdeskSave;
HWINSTA hwinstaUser;
HDESK hdeskUser;
int result;
// Ensure connection to service window station and desktop, and
// save their handles.
GetDesktopWindow();
hwinstaSave = GetProcessWindowStation();
dwThreadId = GetCurrentThreadId();
hdeskSave = GetThreadDesktop(dwThreadId);
hwinstaUser = OpenWindowStation(TEXT("WinSta0"), FALSE, MAXIMUM_ALLOWED);
SetProcessWindowStation(hwinstaUser);
hdeskUser = OpenDesktop(TEXT("Default"), 0, FALSE, MAXIMUM_ALLOWED);
RpcRevertToSelf();
if (hdeskUser == NULL)
{
SetProcessWindowStation(hwinstaSave);
CloseWindowStation(hwinstaUser);
return 0;
}
SetThreadDesktop(hdeskUser);
// Display message box.
dwGuiThreadIde = dwThreadId;
result = MessageBox(NULL, TEXT("Default"), TEXT("Default"), 0); //这一步可以实现
dwGuiThreadIde = 0;
BOOL b_OK = FALSE;
IWebBrowser2 *pBrowser=NULL;
HRESULT hr1 ;
hr1 = CoInitialize(NULL); //这一步也正确
if( !SUCCEEDED( hr1 ) )
{
return FALSE;
}
hr1 = CoCreateInstance(CLSID_InternetExplorer, //到这里出错啦,hr1 报 ACCESSDENY
NULL,
CLSCTX_SERVER,
IID_IWebBrowser2,
(LPVOID *)&pBrowser);
if( !SUCCEEDED( hr1 ) )
{
return FALSE;
}
BSTR bstrURL = ::SysAllocString(TEXT("http://www.baidu.com"));
VARIANT vaURL, vNull;
vaURL.vt = VT_BSTR;
vaURL.bstrVal = bstrURL;
vNull.vt = VT_NULL;
pBrowser->Navigate2(&vaURL,&vNull,&vNull,&vNull,&vNull);
// Restore window station and desktop.
SetThreadDesktop(hdeskSave);
SetProcessWindowStation(hwinstaSave);
CloseDesktop(hdeskUser);
CloseWindowStation(hwinstaUser);
return result;
}
请教各位高手,这个到底是什么原因,为什么iwebbrowser不能创建????
您可能想查找下面的文章:
- IWebBrowser2::Navigate的问题
- IWebBrowser2::Navigate的问题
- 请教IWebBrowser2问题~~~~~~~~~在线等
- 如何用IWebBrowser2判断当前窗口是否处于激活状态?
- ATL下有没有包装过的(基础是IWebBrowser2)的浏览器控件可用?或者哪里有源代码可以下载?
- 通过IWebBrowser2能获得IE中已经载入的其他插件的接口么?
- 给定一个url,如何用IWebBrowser2接口获得该url的源码?
- 如何在activex中得到IWebBrowser2指针???
- 提问一个IWebBrowser2如何自动保存当前的文件啊,如果用EXECWB会弹出SAVE窗口,我想不让他弹出,比如自动保存到C:下,请问这个怎么搞啊,有点
- 关于IWebBrowser2的get_Width,get_Height问题(解决后将加到200分,不够再加,多谢!)