Страница: 1 |
Страница: 1 |
Вопрос: Num Lock, гор. клавиши
Добавлено: 18.03.06 18:07
Автор вопроса: DaaGER | Web-сайт:
Мне надо чтобы при нажатие на кнопку загорался Num Lock(Scroll Lock). Я хочу чтобы при включённом
Scroll Lock'е и одной из клавиш, к примеру "В" происходил набранный мной код.
Пример
Человек включает Scroll Lock (или программа включает)потом нажимает на клавишу и если Scroll Lock
включён происходило бы действие!
Я ПОНИМАЮ, ЧТО НАПИСАЛ НЕПОНЯТНО, НО ВСЁ ТАКИ ПОМОГИТЕ!!!
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #1
Добавлено: 18.03.06 20:18
смотри библиотеку кодов, примеры. Там все великолепно описано и закомментено. Но если лень, то
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long
' Возвращает True если клавиша Ctrl нажата
Function CtrlKey() As Boolean
CtrlKey = (GetAsyncKeyState(vbKeyControl) And &H8000)
End Function
' Возвращает True если клавиша Shift нажата
Function ShiftKey() As Boolean
ShiftKey = (GetAsyncKeyState(vbKeyShift) And &H8000)
End Function
' Возвращает True если клавиша Alt нажата
Function AltKey() As Boolean
AltKey = (GetAsyncKeyState(vbKeyMenu) And &H8000)
End Function
' Возвращает True если нажаты запрашиваемые клавиши
'MsgBox KeysPressed(vbKeyRButton) - нажата ли правая клавиша мыши?
Function KeysPressed(ByVal KeyCode1 As KeyCodeConstants, Optional ByVal KeyCode2 As KeyCodeConstants, Optional ByVal KeyCode3 As KeyCodeConstants) As Boolean
If GetAsyncKeyState(KeyCode1) >= 0 Then Exit Function
If KeyCode2 = 0 Then KeysPressed = True: Exit Function
If GetAsyncKeyState(KeyCode2) >= 0 Then Exit Function
If KeyCode3 = 0 Then KeysPressed = True: Exit Function
If GetAsyncKeyState(KeyCode3) >= 0 Then Exit Function
KeysPressed = True
End Function
' узнать состояние CapsLock.
'MsgBox GetCapsLock. Если True - то включена, если False - выключена
Function GetCapsLock() As Boolean
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
GetCapsLock = (keystat(vbKeyCapital) And 1)
End Function
' Изменение состояния CapsLock:
' SetCapsLock True - включено
' SetCapsLock False - выключено
Sub SetCapsLock(ByVal newValue As Boolean)
' get current state of all 256 virtual keys
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
' modify bit 0 of the relevant item, and store back
keystat(vbKeyCapital) = (keystat(vbKeyCapital) And &HFE) Or (newValue And 1)
SetKeyboardState keystat(0)
End Sub
' узнать состояние ScrollLock.
'MsgBox GetScrollLock. Если True - то включена, если False - выключена
Function GetScrollLock() As Boolean
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
GetScrollLock = (keystat(vbKeyScrollLock) And 1)
End Function
' Изменение состояния ScrollLock.
' SetScrollLock True - включено
' SetScrollLock False - выключено
Sub SetScrollLock(ByVal newValue As Boolean)
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
keystat(vbKeyScrollLock) = (keystat(vbKeyScrollLock) And &HFE) Or (newValue And 1)
SetKeyboardState keystat(0)
End Sub
' узнать состояние NumLock.
'MsgBox GetNumLock. Если True - то включена, если False - выключена
Function GetNumLock() As Boolean
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
GetNumLock = (keystat(vbKeyNumlock) And 1)
End Function
' Изменение состояния NumLock
' SetNumLock True - включено
' SetNumLock False - выключено
Sub SetNumLock(ByVal newValue As Boolean)
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
keystat(vbKeyNumlock) = (keystat(vbKeyNumlock) And &HFE) Or (newValue And 1)
SetKeyboardState keystat(0)
End Sub
' узнать состояние Insert Key.
'MsgBox GetInsertKey. Если True - то включена, если False - выключена
Function GetInsertKey() As Boolean
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
GetInsertKey = (keystat(vbKeyInsert) And 1)
End Function
' Изменение состояния Insert Key
' SetInsertKey True - включено
' SetInsertKey False - выключено
Sub SetInsertKey(ByVal newValue As Boolean)
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
keystat(vbKeyInsert) = (keystat(vbKeyInsert) And &HFE) Or (newValue And 1)
SetKeyboardState keystat(0)
End Sub
Номер ответа: 2
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #2
Добавлено: 18.03.06 20:19
смотри библиотеку кодов, примеры. Там все великолепно описано и закомментено. Но если лень, то
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long
' Возвращает True если клавиша Ctrl нажата
Function CtrlKey() As Boolean
CtrlKey = (GetAsyncKeyState(vbKeyControl) And &H8000)
End Function
' Возвращает True если клавиша Shift нажата
Function ShiftKey() As Boolean
ShiftKey = (GetAsyncKeyState(vbKeyShift) And &H8000)
End Function
' Возвращает True если клавиша Alt нажата
Function AltKey() As Boolean
AltKey = (GetAsyncKeyState(vbKeyMenu) And &H8000)
End Function
' Возвращает True если нажаты запрашиваемые клавиши
'MsgBox KeysPressed(vbKeyRButton) - нажата ли правая клавиша мыши?
Function KeysPressed(ByVal KeyCode1 As KeyCodeConstants, Optional ByVal KeyCode2 As KeyCodeConstants, Optional ByVal KeyCode3 As KeyCodeConstants) As Boolean
If GetAsyncKeyState(KeyCode1) >= 0 Then Exit Function
If KeyCode2 = 0 Then KeysPressed = True: Exit Function
If GetAsyncKeyState(KeyCode2) >= 0 Then Exit Function
If KeyCode3 = 0 Then KeysPressed = True: Exit Function
If GetAsyncKeyState(KeyCode3) >= 0 Then Exit Function
KeysPressed = True
End Function
' узнать состояние CapsLock.
'MsgBox GetCapsLock. Если True - то включена, если False - выключена
Function GetCapsLock() As Boolean
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
GetCapsLock = (keystat(vbKeyCapital) And 1)
End Function
' Изменение состояния CapsLock:
' SetCapsLock True - включено
' SetCapsLock False - выключено
Sub SetCapsLock(ByVal newValue As Boolean)
' get current state of all 256 virtual keys
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
' modify bit 0 of the relevant item, and store back
keystat(vbKeyCapital) = (keystat(vbKeyCapital) And &HFE) Or (newValue And 1)
SetKeyboardState keystat(0)
End Sub
' узнать состояние ScrollLock.
'MsgBox GetScrollLock. Если True - то включена, если False - выключена
Function GetScrollLock() As Boolean
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
GetScrollLock = (keystat(vbKeyScrollLock) And 1)
End Function
' Изменение состояния ScrollLock.
' SetScrollLock True - включено
' SetScrollLock False - выключено
Sub SetScrollLock(ByVal newValue As Boolean)
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
keystat(vbKeyScrollLock) = (keystat(vbKeyScrollLock) And &HFE) Or (newValue And 1)
SetKeyboardState keystat(0)
End Sub
' узнать состояние NumLock.
'MsgBox GetNumLock. Если True - то включена, если False - выключена
Function GetNumLock() As Boolean
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
GetNumLock = (keystat(vbKeyNumlock) And 1)
End Function
' Изменение состояния NumLock
' SetNumLock True - включено
' SetNumLock False - выключено
Sub SetNumLock(ByVal newValue As Boolean)
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
keystat(vbKeyNumlock) = (keystat(vbKeyNumlock) And &HFE) Or (newValue And 1)
SetKeyboardState keystat(0)
End Sub
' узнать состояние Insert Key.
'MsgBox GetInsertKey. Если True - то включена, если False - выключена
Function GetInsertKey() As Boolean
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
GetInsertKey = (keystat(vbKeyInsert) And 1)
End Function
' Изменение состояния Insert Key
' SetInsertKey True - включено
' SetInsertKey False - выключено
Sub SetInsertKey(ByVal newValue As Boolean)
Dim keystat(0 To 255) As Byte
GetKeyboardState keystat(0)
keystat(vbKeyInsert) = (keystat(vbKeyInsert) And &HFE) Or (newValue And 1)
SetKeyboardState keystat(0)
End Sub
Номер ответа: 3
Автор ответа:
DaaGER
ICQ: 329195567
Вопросов: 52
Ответов: 67
Web-сайт:
Профиль | | #3
Добавлено: 19.03.06 00:59
ПАСИБО!!!
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 20.03.06 00:40
ацтой.
гор. кнопки реаизуются через RegisterHotKey
Номер ответа: 5
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #5
Добавлено: 20.03.06 19:35
Вообще-то
Если этот пример делает дело, ???
Номер ответа: 6
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #6
Добавлено: 20.03.06 19:40
Ну вот. Проверил.
SetCapsLock True
End Sub
Лампочка не загорается. Однако печать после этого идет в верхнем регистре и реакция на капслок инвертируется: нажал CapsLock, индикатор всетится, а набирается мелкими буквами. Плохая реализация.