События, генерируемые клавиатурой

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

События, генерируемые клавиатурой

Сообщение Sol » 08.05.2006 (Пн) 18:39

Нужно передать консольному приложению последовательность сигналов клавиатуры (включая <Enter>, <Esc>, <F_>, вверх, вниз, т.д.). Дайте пожалуйста ссылочку, где можно подробнее почитать про хуки. Есть ли другие способы?
- Внимание, Земля, говорит борт 13, у нас отказал бортовой компьютер, что делать?
- Борт 13, борт 13, это диспетчер, слышите меня? Играйте пока на резервном, играйте на резервном.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 08.05.2006 (Пн) 23:27

Код: Выделить всё
Const VK_H = 72
Const VK_E = 69
Const VK_L = 76
Const VK_O = 79
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Sub Form_Click()
    'KPD-Team 2000
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim hw As Long
   
    hw = FindWindow(vbNullString, "cmd")
    SetForegroundWindow hw
       
    DoEvents
   
    keybd_event VK_H, 0, 0, 0   ' press H
    keybd_event VK_H, 0, KEYEVENTF_KEYUP, 0   ' release H
    keybd_event VK_E, 0, 0, 0  ' press E
    keybd_event VK_E, 0, KEYEVENTF_KEYUP, 0  ' release E
    keybd_event VK_L, 0, 0, 0  ' press L
    keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0  ' release L
    keybd_event VK_L, 0, 0, 0  ' press L
    keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0  ' release L
    keybd_event VK_O, 0, 0, 0  ' press O
    keybd_event VK_O, 0, KEYEVENTF_KEYUP, 0  ' release O
    SetForegroundWindow Me.hwnd
End Sub

Sol
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 23.04.2006 (Вс) 11:32
Откуда: Москва

Сообщение Sol » 08.05.2006 (Пн) 23:32

Спасибо.
А как реализовать передачу <Enter>,<F1,...>,<Up>,<Down>,<Esc> ?
- Внимание, Земля, говорит борт 13, у нас отказал бортовой компьютер, что делать?
- Борт 13, борт 13, это диспетчер, слышите меня? Играйте пока на резервном, играйте на резервном.

Sol
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 23.04.2006 (Вс) 11:32
Откуда: Москва

Сообщение Sol » 08.05.2006 (Пн) 23:35

А, кажется понял!
Тогда ещё вопрос. Есть такая функция SendMessage. Где найти полный список используемых констант (сообщений windows)?
- Внимание, Земля, говорит борт 13, у нас отказал бортовой компьютер, что делать?
- Борт 13, борт 13, это диспетчер, слышите меня? Играйте пока на резервном, играйте на резервном.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 08.05.2006 (Пн) 23:37

Лезем в Api Viewer из поставки Visual Studio или в ApiViewer 2004, смотрим константы, начинающиеся на 'VK_'.

Если что-то не получается, в поиск по форуму. Там это было.

Sol
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 23.04.2006 (Вс) 11:32
Откуда: Москва

Сообщение Sol » 08.05.2006 (Пн) 23:42

Здорово! Спасибо!
- Внимание, Земля, говорит борт 13, у нас отказал бортовой компьютер, что делать?
- Борт 13, борт 13, это диспетчер, слышите меня? Играйте пока на резервном, играйте на резервном.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 08.05.2006 (Пн) 23:49

Sol, мой предыдущий пост относится к http://bbs.vbstreets.ru/viewtopic.php?p=6603167#6603167. Константы для сообщений там же, только начинаются на 'WM_'.


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

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

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

    TopList  
cron