Таки решил эту проблему... вся ерунда оказалась в том, что окно тупо не успевало подвязываться на процесс. Такие вот дела. Вот код, который запускает страничку в ИЕ с заданными координатами и шириной. Моет кому-то тоже пару дней сэкономит:
| Код | //Команда, необходимая для перемещения окна [System.Runtime.InteropServices.DllImport("user32.dll")] private static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint); //Команда, необходимая для отображения окна с новыми координатами [System.Runtime.InteropServices.DllImport("user32.dll")] private static extern bool UpdateWindow(IntPtr hWnd);
private void button2_Click(object sender, EventArgs e) { Point p = this.Location; //получили координаты формы, относительно которой позиционируем браузер System.Diagnostics.Process browserProc = System.Diagnostics.Process.Start("IEXPLORE.EXE", "-nomerge "+webBrowser1.Url.ToString());//запускаем процесс в новом окне ИЕ while (browserProc.MainWindowHandle == IntPtr.Zero)//пока винда не ассоциировала окно с процессом { Thread.Sleep(50);// ждём 50 мс browserProc.Refresh();// обновялем процесс } //как только получили дескриптор окна, начинаем манипуляции с ним browserProc.WaitForInputIdle(); MoveWindow(browserProc.MainWindowHandle, p.X, p.Y, this.Width, this.Height, true);//устанавливаем новые координаты окна UpdateWindow(browserProc.MainWindowHandle);// обновляем окно }
|
|