Создание процесса для запуска IE на новом рабочем столе Windows

Я пытаюсь настроить киоск 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;
}

1

Решение

Попробуйте передать следующую командную строку CreateProcess (больше информации):

"iexplore.exe -k -noframemerging http://www.google.com"

У вас также есть возможность автоматизировать Internet Explorer через OLE InternetExplorer.Application объект, особенности с put_Visible, put_FullScreen а также Navigate2 методы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector