我试图建立它运行IE单独的桌面上的IE亭。 虽然我测试我刚开始IE正常(不kiosk模式下),不过虽然IE新的桌面上启动时,它不会加载在命令字符串指定的初始页面,它只是沙漏闪烁坐在那里开启和关闭真的很快(甚至当我在别处移动桌面上的鼠标,IE窗口之外)。 有没有在导航中显示的网址。 我可以访问菜单等IE里面,但即使我的手在URL中键入什么也没发生。 关闭IE浏览器把我带回到默认桌面预期。
一对夫妇的额外的东西我想:启动一个命令提示符(正常工作,我可以ping我试图连接到网站,所以从全新的桌面互联网不堵塞); 有一个文件名参数启动记事本(正常工作,打开指定的文件,所以我正确地传递命令行参数)。
这是我的代码; 任何想法表示欢迎:
#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;
}