Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск браузера в новом окне, с утановленными координатами и размерами 
:(
    Опции темы
Pritorian
Дата 19.3.2010, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 18.3.2010

Репутация: нет
Всего: нет



Здравствуйте, возникла следующая проблема, буду благодарен если посоветуете решение.
Есть пара координат (х, у... допустим 450 200), есть размеры окна (height, width... например 100 100).

Каким образом запустить новое окно стандартного браузера (прописанного в системе) так, чтобы окно встало на координаты х,у и имело соответствующий размер.
Пробовал смотреть System.Diagnostics.Process - всё хорошо, но увы, ничего похожего на Location не нашёл.
Проблема собственно не в запуске дефолтного браузера, а именно с установкой его размеров и позиционированием.

Спасибо за внимание.

Это сообщение отредактировал(а) Pritorian - 19.3.2010, 16:15
PM MAIL   Вверх
CYBERDREAM
Дата 19.3.2010, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 4
Всего: 28



Приветствую.
Controlling window position with the win32 API как раз то что тебе нужно


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
Pritorian
Дата 19.3.2010, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 18.3.2010

Репутация: нет
Всего: нет



Спасибо, полезная ссылка, хотя как всегда с накладками. Буду разбираться.
Будут ещё предложения?
PM MAIL   Вверх
CYBERDREAM
Дата 19.3.2010, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 4
Всего: 28



Какие накладки и зачем еще предложения?


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
Pritorian
Дата 19.3.2010, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 18.3.2010

Репутация: нет
Всего: нет



Я создаю свой процесс следующим образом:

Код


private void button2_Click(object sender, EventArgs e)
        {
          
            using (System.Diagnostics.Process browserProc = new System.Diagnostics.Process())//создаём процесс, который запустит браузер по умолчанию
            {
                browserProc.StartInfo.FileName = webBrowser1.Url.ToString();//передаём процессу ссылку
                browserProc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;

                tagWINDOWINFO info = new tagWINDOWINFO();
                info.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(info);
                
                browserProc.Start();//запускаем процесс
                
                GetWindowInfo(browserProc.MainWindowHandle, ref info); // а вот тут возникает ошибка, No process is associated with this object
                               
                browserProc.WaitForInputIdle();
                string str = browserProc.MainWindowTitle;
                MoveWindow(browserProc.MainWindowHandle, 100, 100, 100, 100, true);//координаты просто для теста
                UpdateWindow(browserProc.MainWindowHandle);

            }
        }


PM MAIL   Вверх
Dobermann
Дата 19.3.2010, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Зацени 3D браузер 
http://chriscavanagh.wordpress.com/2009/08...romium-browser/ 
и забей WinForms smile 
PM   Вверх
Pritorian
Дата 19.3.2010, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 18.3.2010

Репутация: нет
Всего: нет



Странно на самом деле, что не получается получить хэндлер... Делая выборку по активным процессам, окно открывшееся там присутствует...
PM MAIL   Вверх
Pritorian
Дата 21.3.2010, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 18.3.2010

Репутация: нет
Всего: нет



Таки решил эту проблему... вся ерунда оказалась в том, что окно тупо не успевало подвязываться на процесс. Такие вот дела. Вот код, который запускает страничку в ИЕ с заданными координатами и шириной. Моет кому-то тоже пару дней сэкономит:

Код

//Команда,  необходимая для перемещения окна
        [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);// обновляем окно
        }


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.