Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Num Lock, гор. клавиши Добавлено: 18.03.06 18:07  

Автор вопроса:  DaaGER | Web-сайт: smartic.ru | ICQ: 329195567 
Мне надо чтобы при нажатие на кнопку загорался Num Lock(Scroll Lock). Я хочу чтобы при включённом
Scroll Lock'е и одной из клавиш, к примеру "В" происходил набранный мной код.
Пример
Человек включает Scroll Lock (или программа включает)потом нажимает на клавишу и если Scroll Lock
включён происходило бы действие!
Я ПОНИМАЮ, ЧТО НАПИСАЛ НЕПОНЯТНО, НО ВСЁ ТАКИ ПОМОГИТЕ!!!

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #1 Добавлено: 18.03.06 20:18
смотри библиотеку кодов, примеры. Там все великолепно описано и закомментено. Но если лень, то
Данный пример покажет вам состояние функциональных клавши: Ctrl Shift Alt CapsLock ScrollLock NumLock Insert Key

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
смотри библиотеку кодов, примеры. Там все великолепно описано и закомментено. Но если лень, то
Данный пример покажет вам состояние функциональных клавши: Ctrl Shift Alt CapsLock ScrollLock NumLock Insert Key

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-сайт: smartic.ru
 Профиль | | #3
Добавлено: 19.03.06 00:59
ПАСИБО!!!

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 20.03.06 00:40
ацтой.
гор. кнопки реаизуются через RegisterHotKey

Ответить

Номер ответа: 5
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #5
Добавлено: 20.03.06 19:35
Вообще-то
Because the SetKeyboardState function alters the input state of the calling thread and not the global input state of the system, an application cannot use SetKeyboardState to set the num lock, caps lock, or scroll lock indicator lights on the keyboard.
Цитата MSDN.

Если этот пример делает дело, ???

Ответить

Номер ответа: 6
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #6
Добавлено: 20.03.06 19:40
Ну вот. Проверил.
Private Sub Command1_Click()
SetCapsLock True
End Sub

Лампочка не загорается. Однако печать после этого идет в верхнем регистре и реакция на капслок инвертируется: нажал CapsLock, индикатор всетится, а набирается мелкими буквами. Плохая реализация.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам