我正在尝试设置一个IE售货亭,该信息亭在单独的桌面上运行IE。当我测试时,我只是正常启动IE(不在售货亭模式下),但是尽管IE在新桌面上启动,但它并未加载命令字符串中指定的初始页面,但它只是带有Hourglass闪烁的位置真的很快就打开和关闭(即使我将鼠标移动到IE窗口外面的桌面上的其他地方)。导航框中没有显示URL。我可以访问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;
}
尝试将以下命令行传递到CreateProcess
(更多信息):
"iexplore.exe -k -noframemerging http://www.google.com"
您还可以选择通过ole InternetExplorer.Application
对象,具有put_Visible
,put_FullScreen
和Navigate2
方法自动化Internet Explorer。