Эмуляция нажатия клавиши "ENTER"

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

Эмуляция нажатия клавиши "ENTER"

Сообщение mayevskyy » 07.04.2004 (Ср) 8:33

Как выполнить эмуляцию нажатия клавиши "ENTER" окна Windows зная его hwnd?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.04.2004 (Ср) 9:29

С помощью SendMessage послать ему соответствующее сообщение :)

mayevskyy
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 02.04.2004 (Пт) 12:14
Откуда: Ukraine

Сообщение mayevskyy » 07.04.2004 (Ср) 9:51

Если можно объясни чуть подробнее ...

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

Сообщение alibek » 07.04.2004 (Ср) 10:14

Можно проще.
Через SetFocus активировать его и послать SendKeys "{ENTER}", True.
Lasciate ogni speranza, voi ch'entrate.

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 07.04.2004 (Ср) 10:23

А как можна этот самый ENTER заблокировать глобально? То бишь юзер нажал, а ничего не произошло

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.04.2004 (Ср) 10:38

Перехватываешь KeyDown и пишешь примерно следующее:
Код: Выделить всё
If KeyCode = vbKeyReturn or keyCode = vbKeyExecute then
  KeyCode = 0
End If

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 07.04.2004 (Ср) 10:50

Ennor писал(а):Перехватываешь KeyDown и пишешь примерно следующее:
Код: Выделить всё
If KeyCode = vbKeyReturn or keyCode = vbKeyExecute then
  KeyCode = 0
End If

Это будет только на форме работать. А глобально через хукер надо. Но как передать системе этот самый 0 ?

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.04.2004 (Ср) 11:17

Значит, вешай глобальный хук на событие типа WM_CHAR или какое там оно, не помню. Как вешать хуки, ищи на http://www.rsdn.ru

mayevskyy
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 02.04.2004 (Пт) 12:14
Откуда: Ukraine

Сообщение mayevskyy » 07.04.2004 (Ср) 14:09

Плиз, подскажите как правильно послать сообщение WM_KEYDOWN и WM_KEYUP для клавиши ENTER, пожалуйста если можно подробно опишите первый параметр сообщения.

Unknown Error
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 25.04.2004 (Вс) 3:40
Откуда: Брянск

Сообщение Unknown Error » 25.04.2004 (Вс) 5:05

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_KEYDOWN = &H100
Private Const VK_RETURN = &HD

...
SendMessage YourWindow.hwnd, WM_KEYDOWN, VK_RETURN, 1
...


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

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

Сейчас этот форум просматривают: Google-бот и гости: 30

    TopList