Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
killerb
-
- Новичок

-
-
- Сообщения: 43
- Зарегистрирован: 27.01.2005 (Чт) 23:08
- Откуда: Днепропетровск
-
killerb » 06.05.2005 (Пт) 20:16
Я очень долго искал исходники программы, которая отлавливает Нажатия клавиш вне формы, но нашел и решил поделиться.
- Код: Выделить всё
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Sub Timer1_Timer()
For i = 1 To 120
If GetAsyncKeyState(i) Then n = i
Next i
Me.Caption = n & "-" & Chr(n)
End Sub
Таблица символов:
TAB - 9
Caps Look - 20
Shift - 16
Ctrl - 17
Alt - 18
Win 91
Space - 32
Enter - 13
Left - 37
Up - 38
Right - 39
Down - 40
Black Space - 8
...
Mouse Левая - 1
Mouse Правая - 2
Mouse Средняя - 4
Последний раз редактировалось
killerb 06.05.2005 (Пт) 20:25, всего редактировалось 1 раз.
Жизнь - это карусель, на которой никому не дано удержаться надолго. Стивен Кинг
-
killerb
-
- Новичок

-
-
- Сообщения: 43
- Зарегистрирован: 27.01.2005 (Чт) 23:08
- Откуда: Днепропетровск
-
killerb » 06.05.2005 (Пт) 20:35
Плиз, подскажите функцию и к ней параметры, с помощью которой можно "нажимать" клавиши клавиатуры. Если лень дать полноценный ответ - сойдет и ссылка ...
Жизнь - это карусель, на которой никому не дано удержаться надолго. Стивен Кинг
-
Amed
-
- Алфизик

-
-
- Сообщения: 5346
- Зарегистрирован: 09.03.2003 (Вс) 9:26
-
Amed » 06.05.2005 (Пт) 20:36
keybd_event...
В Яндекс за описанием. Или в msdn.microsoft.com/library. Или в API-Guide.
-
Amed
-
- Алфизик

-
-
- Сообщения: 5346
- Зарегистрирован: 09.03.2003 (Вс) 9:26
-
Amed » 06.05.2005 (Пт) 20:40
API-Guide писал(а):The keybd_event function synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver’s interrupt handler calls the keybd_event function.
- Код: Выделить всё
Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
API-Guide писал(а):· bVk
Specifies a virtual-key code. The code must be a value in the range 1 to 254.
· bScan
Specifies a hardware scan code for the key.
fdwFlags
A set of flag bits that specify various aspects of function operation. An application can use any combination of the following predefined constant values to set the flags:
KEYEVENTF_EXTENDEDKEY
If specified, the scan code was preceded by a prefix byte having the value 0xE0 (224).
KEYEVENTF_KEYUP
If specified, the key is being released. If not specified, the key is being depressed.
· dwExtraInfo
Specifies an additional 32-bit value associated with the key stroke.
Example:
- Код: Выделить всё
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 Sub Form_KeyPress(KeyAscii As Integer)
'Print the key on the form
Me.Print Chr$(KeyAscii);
End Sub
Private Sub Form_Paint()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'Clear the form
Me.Cls
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
End Sub
-
killerb
-
- Новичок

-
-
- Сообщения: 43
- Зарегистрирован: 27.01.2005 (Чт) 23:08
- Откуда: Днепропетровск
-
killerb » 06.05.2005 (Пт) 20:45
Спасибо.
Я нашел аналог, причем более простой...
- Код: Выделить всё
SendKeys {ENTER}
'где вместо ENTER - название любой другой клавиши (1...0;а-я;a-z;PGUP,PGDOWN...)
Жизнь - это карусель, на которой никому не дано удержаться надолго. Стивен Кинг
-
ALX_2002
-
- Мега гуру

-
-
- Сообщения: 2056
- Зарегистрирован: 25.11.2002 (Пн) 20:03
-
ALX_2002 » 06.05.2005 (Пт) 23:44
А можно получать состояние сразу всех клавиш.
- Код: Выделить всё
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim kbArray As KeyboardBytes
Private Sub Form_Activate()
Do
Me.Cls
GetKeyboardState kbArray
For n = 1 To 255
Print kbArray.kbByte(n)
Next
Sleep 10
DoEvents
Loop
End Sub
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот, Majestic-12 [Bot], SemrushBot и гости: 10