работа в фоне, чтоб не терялся фокус с основного

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
unreal_2007
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 20.09.2007 (Чт) 7:21

работа в фоне, чтоб не терялся фокус с основного

Сообщение unreal_2007 » 22.09.2008 (Пн) 10:03

Здраствуйте есть программа запуска Explorer`а по таймеру.
Код: Выделить всё
    Set Ie = CreateObject("InternetExplorer.Application")
    Ie.Navigate "http://speed.travian.ru/login.php"
    Ie.MenuBar = 1
    Ie.ToolBar = 1
    Ie.StatusBar = 1
    Ie.AddressBar = 1
    Ie.Visible = 0


проблемма в том что активное окно теряет фокус, хотя окно Explorer`а скрыто.
вопрос как этого избежать

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: работа в фоне, чтоб не терялся фокус с основного

Сообщение Денис » 22.09.2008 (Пн) 10:20

Код: Выделить всё
    Set Ie = CreateObject("InternetExplorer.Application")

    me.setfocus

    Ie.Navigate "http://speed.travian.ru/login.php"
    Ie.MenuBar = 1
    Ie.ToolBar = 1
    Ie.StatusBar = 1
    Ie.AddressBar = 1
    Ie.Visible = 0
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

unreal_2007
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 20.09.2007 (Чт) 7:21

Re: работа в фоне, чтоб не терялся фокус с основного

Сообщение unreal_2007 » 22.09.2008 (Пн) 12:00

Проблема не втом чтобы навести фокус на IE, а какраз на оборот сделать так чтоб при выполнении IE не перехвытывал фокус, а оставался в фоне,
что-то вроде vbNormalNoFocus.
и если можно поподробнее

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: работа в фоне, чтоб не терялся фокус с основного

Сообщение alibek » 22.09.2008 (Пн) 12:27

Возможно что никак.
Lasciate ogni speranza, voi ch'entrate.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: работа в фоне, чтоб не терялся фокус с основного

Сообщение Денис » 22.09.2008 (Пн) 13:35

unreal_2007 писал(а):Проблема не втом чтобы навести фокус на IE, а какраз на оборот сделать так чтоб при выполнении IE не перехвытывал фокус, а оставался в фоне,
что-то вроде vbNormalNoFocus.
и если можно поподробнее


Извиняюсь, не проверил код. Вот рабочий вариант.
Код: Выделить всё
Private Sub Form_Activate() 'Именно Activate а не Load
   
    Set Ie = CreateObject("InternetExplorer.Application")
   
    With Ie
      .Navigate "http://speed.travian.ru/login.php"
      .MenuBar = 1
      .ToolBar = 1
      .StatusBar = 1
      .AddressBar = 1
      .Visible = 1
    End With
   
    Me.SetFocus
   
End Sub
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: работа в фоне, чтоб не терялся фокус с основного

Сообщение alibek » 22.09.2008 (Пн) 13:51

Денис, а ты сам вопрос прочитал?
Ему не надо активировать инстанс IE. Ему надо, чтобы фокус не пропадал с его собственной программы при открытии инстанса IE в фоновом режиме (а фокус теряется, потому что IE его сбивает).
Lasciate ogni speranza, voi ch'entrate.

unreal_2007
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 20.09.2007 (Чт) 7:21

Re: работа в фоне, чтоб не терялся фокус с основного

Сообщение unreal_2007 » 22.09.2008 (Пн) 14:20

Может другое решение есть, от друго пользователя это запускать или еще как :cry:

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: работа в фоне, чтоб не терялся фокус с основного

Сообщение Денис » 22.09.2008 (Пн) 14:51

Мой код активирует собственную форму (не путать IE с Me!!!)
Есть еще один метод, при помощи АПИ SetParent засунуть свое окно внутрь окна IE. Но это будет не совсем удобно.
Код: Выделить всё
Private Declare Function SetParent _
   Lib "user32" (ByVal hWndChild As Long, _
   ByVal hWndNewParent As Long) As Long
    Set Ie = CreateObject("InternetExplorer.Application")
   
...

    With Ie
      .Navigate "ya.ru"
      .MenuBar = 1
      .ToolBar = 1
      .StatusBar = 1
      .AddressBar = 1
      .Visible = 1
      SetParent Me.hwnd, .hwnd
    End With
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 76

    TopList