powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблемы переключения фокуса
5 сообщений из 5, страница 1 из 1
Проблемы переключения фокуса
    #37089450
Дмитрий П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение стартует с Form1 (невидима) и запускает ee таймер, который выдает в определенный момент (через 5сек) на экран Form2 с TextBox. Я хотел, чтобы в этот момент фокус ввода переместился в TextBox на Form2, даже если в этот момент он в другом приложении (например в NotePad). Как этого добиться? Спасибо.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Form_Load()
Timer1.Interval =  5000 
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Timer1.Enabled = False
Form2.Show
Form2.Text1.SetFocus
End Sub

Заголовок Form2 моргает 3 раза, но TextBox не получает фокус ввода.
...
Рейтинг: 0 / 0
Проблемы переключения фокуса
    #37089457
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий П.,

SetForegroundWindow а потом уже SetFocus
...
Рейтинг: 0 / 0
Проблемы переключения фокуса
    #37089511
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблемы переключения фокуса
    #37098827
Дмитрий П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLAD,Игорь Горбонос,

Нет это все не работает.

Специалист с форума VBStreets написал:
ХакерВ некоторый момент в Windows стало запрещено одному приложению перетягивать на себя одеяло фореграундность с другого приложения. И это правильно.

Остается одно - имитировать клик мышки по TextBox
...
Рейтинг: 0 / 0
Проблемы переключения фокуса
    #37098888
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий П., Проверил... действительно не хочет передавать. Испробовал:

1) SetForegroundWindow
2) BringWindowToTop
3) SetActiveWindow
4) AllowSetForegroundWindow
5) SetFocus

Более менее работает с:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const HWND_NOTOPMOST As Long = - 2 
Private Const HWND_TOPMOST As Long = - 1 

Private Const SWP_NOMOVE As Long = &H2
Private Const SWP_NOSIZE As Long = &H1

Private Sub Timer1_Timer()
    SetWindowPos Me.hwnd, HWND_TOPMOST,  0 ,  0 ,  0 ,  0 , SWP_NOMOVE Or SWP_NOSIZE
    SetWindowPos Me.hwnd, HWND_NOTOPMOST,  0 ,  0 ,  0 ,  0 , SWP_NOMOVE Or SWP_NOSIZE
    Text1.Text = "Test"
End Sub

Но работает в том случае, если окно нашей программы находится ниже по уровню к той у которой фокус...
Надо как-то попробовать перекрыть нашу форму чужим окном, тогда сможем получить фокус при любых обстоятельствах
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблемы переключения фокуса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]