Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Капс лок


Автор: Dievas 11.2.2006, 03:07
Подскажите плиз как в Visual Basic'е (точнее VBA) проверить состояние Caps Lock

Автор: cardinal 11.2.2006, 03:49
В FAQ'e был?

Автор: Dievas 11.2.2006, 06:31
нет там

Автор: cardinal 11.2.2006, 15:58
А если подумать...
Код

Option Explicit

Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long

Private Sub Command1_Click()
Dim keys(0 To 255) As Byte
Dim CapsLockState As Boolean
GetKeyboardState keys(0)
If keys(vbKeyCapital) Then MsgBox "Caps Lock нажата!"
End Sub

http://vingrad.ru/VB-VB-002027

Автор: Exception 11.2.2006, 16:24
Вроде бы можно проще:
Код
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Const VK_CAPITAL = 'Не помню, смотрите через Api Viewer
Dim caps As Long
caps = GetKeyState(VK_CAPITAL)
If caps And 1 Then MsgBox "Нажата кнопка Caps Lock!"

Автор: cardinal 11.2.2006, 16:35
Да тут вопрос не в том, что проще, а в том, что Dievas лень немного подумать...
Цитата(cardinal @ 11.2.2006, 01:49 Найти цитируемый пост)
В FAQ'e был?

А это означает, что там есть!

Автор: Dievas 13.2.2006, 06:21
Незачем так наезжать...
Честно говоря не думал, что API'шные функции доступны из VBA (где же тогда безопасность)

За подсказку спасибо smile

Автор: Akina 13.2.2006, 09:51
Цитата(Dievas @ 13.2.2006, 07:21 Найти цитируемый пост)
не думал, что API'шные функции доступны из VBA (где же тогда безопасность)

А при чем тут безопасность? у Вас какое-то кривое о ней представление. Чего не положено - того система не даст, в т.ч. через АПИ...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)