创建过程中新的Windows桌面上运行IE浏览器(Creating process to run I

2019-10-19 06:26发布

我试图建立它运行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;
}

Answer 1:

试试下面的命令行传递给CreateProcess ( 详细信息 ):

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

你也有一个选项,通过OLE自动化的Internet Explorer InternetExplorer.Application对象,特殊性与put_Visibleput_FullScreenNavigate2方法。



文章来源: Creating process to run IE on new Windows desktop