Я пытаюсь настроить киоск IE, который запускает IE на отдельном рабочем столе. Пока я тестирую, я просто запускаю IE нормально (не в режиме киоска), но хотя IE запускается на новом рабочем столе, он не загружает начальную страницу, указанную в командной строке, он просто сидит там с мерцанием песочных часов включается и выключается очень быстро (даже когда я перемещаю мышь в другое место на рабочем столе, за пределами окна IE). В окне навигации не отображается URL. Я могу получить доступ к меню и т. Д. Внутри IE, но даже если я наберу URL вручную, ничего не произойдет. Закрытие IE возвращает меня к рабочему столу по умолчанию, как и ожидалось.
Несколько дополнительных вещей, которые я попробовал: запуск командной строки (работает нормально, и я могу пропинговать сайт, к которому пытаюсь подключиться, чтобы доступ в Интернет с нового рабочего стола не блокировался); запуск Блокнота с параметром имени файла (работает нормально, открывает указанный файл, поэтому я правильно передаю параметр командной строки).
Это мой код; любые мысли приветствуются:
#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"
У вас также есть возможность автоматизировать Internet Explorer через OLE InternetExplorer.Application
объект, особенности с put_Visible
, put_FullScreen
а также Navigate2
методы.
Других решений пока нет …