我正在尝试设置一个IE浏览器,它在一个单独的桌面上运行IE。虽然我正在测试我只是正常启动IE(不是在kiosk模式下),但是虽然IE在新桌面上启动但它没有加载命令字符串中指定的初始页面,它只是坐在那里,沙漏闪烁快速打开和关闭(即使我将鼠标移动到桌面上的其他位置,在IE窗口之外)。导航框中没有显示URL。我可以在IE中访问菜单等,但即使我手动输入URL也没有任何反应。关闭IE会按预期将我带回默认桌面。
我尝试了一些额外的事情:启动命令提示符(工作正常,我可以ping我正在尝试连接的网站,因此不会阻止来自新桌面的Internet访问);使用文件名参数启动记事本(工作正常,打开指定的文件,所以我正确传递命令行参数)。
这是我的代码;欢迎任何想法:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
char* desktop = "MyDesktop";
HDESK hThreadDT = GetThreadDesktop(GetCurrentThreadId());
HDESK hInputDT = OpenInputDesktop(0, FALSE, DESKTOP_SWITCHDESKTOP);
HDESK hNewDT = CreateDesktop(desktop, NULL, NULL, 0, GENERIC_ALL, NULL);
SetThreadDesktop(hNewDT);
SwitchDesktop(hNewDT);
if (SetCurrentDirectory("C:\\Program Files\\Internet Explorer")) {
PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&pi, 0, sizeof(pi));
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
si.lpDesktop = desktop;
if (CreateProcess(NULL, "iexplore.exe http://www.google.com",
NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
WaitForSingleObject(pi.hProcess,INFINITE);
}
else {
char msg[1000];
wsprintf(msg,"CreateProcess failed (%d)",GetLastError());
MessageBox(NULL,msg,NULL,MB_OK);
}
}
SwitchDesktop(hInputDT);
SetThreadDesktop(hThreadDT);
CloseDesktop(hNewDT);
return 0;
}
答案 0 :(得分:1)
尝试将以下命令行传递给CreateProcess
(more info):
"iexplore.exe -k -noframemerging http://www.google.com"
您还可以选择通过OLE InternetExplorer.Application
对象自动执行Internet Explorer,特别是使用put_Visible
,put_FullScreen
和Navigate2
方法。