我正在写一个应该作为计划任务运行的.exe文件,以检查是否需要在特定显示器上打开运行.Xbaps的IE窗口。我有一个检查应该运行哪些网址的代码,如果它不是我使用此代码来启动它,然后将其移动到正确的显示器:获取第二个IE窗口在不同的显示器上打开
Process myProcess = Process.Start("iexplore.exe", "-new -k " + "http://server01:123/software.client.xbap");
myProcess.WaitForInputIdle();
Thread.Sleep(500);
MoveWindowToMonitor(myProcess.MainWindowHandle, 1);
窗口移动代码:
private static void MoveWindowToMonitor(IntPtr windowHandler, int monitor)
{
RECT windowRec = new RECT();
GetWindowRect(windowHandler, ref windowRec);
int width = windowRec.Right - windowRec.Left;
int height = windowRec.Top - windowRec.Bottom;
if (width < 0)
width = width * -1;
if (height < 0)
height = height * -1;
SetWindowPos(windowHandler, (IntPtr)SpecialWindowHandles.HWND_TOP, Screen.AllScreens[monitor].WorkingArea.Left,
Screen.AllScreens[monitor].WorkingArea.Top, width, height, SetWindowPosFlags.SWP_SHOWWINDOW);
}
运行这是一个快速测试版本,可以打开第一个IE窗口,启动Xbap,然后快速将其移至其他监视器。当我第二次运行它时,没有关闭第一个IE窗口,我总是得到InvalidOperationException
“进程已退出,所以请求的信息不可用。”
我检查我的任务管理器,因为这正在发生,我居然得到详细信息下,我第一次运行任务的任务的每个随后的执行,有两种IEXPLORE.EXE项,只有一个额外的IEXPLORER.EXE 。我还为每个xbap启动一个PresentationHost.exe。
任何人有任何想法我做错了或更好的方式来做到这一点? 我的最终目标是能够做到这一点:显示器2
- 启动IE Kiosk模式监视器1与特定的URL X上
你可以只创建自己的窗口和使用ActiveX在其中主机IE浏览器。 –
这会有多困难?你有一个简单的例子吗? IE仍然能够以全屏模式运行? – JonD
这里有一些信息:http://msdn.microsoft.com/en-us/library/aa752041(v=vs.85).aspx - 你可以根据需要配置外观(基本上你得到的是IE窗口的“内部”区域 - 实际显示网页的位)。代码项目有几个例子。 –