我正在寫一個應該作爲計劃任務運行的.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窗口的「內部」區域 - 實際顯示網頁的位)。代碼項目有幾個例子。 –