|
|
|
Junior Member
      
участник
Last Login: 02.06.2000 15:56
Сообщ.: 11,
Visits: 122
|
|
| Как сделать, чтобы форма появлялась и "пряталась" в зависимости от состояния Num Lock. С GetKeyboardState возникли проблемы. Очень надо, спасибо! Можно прислать по мылу kudryashov@hotmail.ru
|
|
|
|
|
Supreme Being
      
участник
Last Login: 17.06.2000 2:39
Сообщ.: 257,
Visits: 2 861
|
|
Попробуй это, должно работать:
создай StatusBar, вставь в него 3 панели. Свойсво Style для первой установи "Caps", для второй - "Num", для третьей - "Scrl". А потом отслеживай их состояние.
PS:
Точно знаю, что есть такая API-функция, которая отслеживает и Caps, и Num, и Scroll. Но какая это именно функция, не помню. Если найду, помещу в форум.
|
|
|
|
|
Junior Member
      
участник
Last Login: 02.06.2000 15:56
Сообщ.: 11,
Visits: 122
|
|
| Спасибо, попробую и напишу о том, что получилось!
|
|
|
|
|
Forum Member
      
участник
Last Login: 23.03.2000 5:02
Сообщ.: 40,
Visits: 441
|
|
Попытайся использовать GetAsyncKeyState() с параметрами
&H14 - Caps Lock
&H90 - Num Lock
&H91 - Scroll Lock
Эта функция возвращает 0, если клавиша не была нажата,
1, если она была нажата и отпущена, и другое значение,
если она нажата сейчас.
В случае, если "лампочка" горит, клавиша нажата сейчас.
Удачи!
Если все еще есть проблемы, можешь писать напрямую
желательно по-английски, поскольку у меня Hebrew Enabled Windows.
Рут Глушкина,
Израиль
|
|
|
|
|
Junior Member
      
участник
Last Login: 02.06.2000 15:56
Сообщ.: 11,
Visits: 122
|
|
БОЛЬШОЕ спасибо Всем кто принимал участие! Вот, как Я сам реализовал ЭТО. На оригинальность не претендую!
---------------
1. Создайте стандартный проект; 2. На форму поместите таймер (Timer); 3. Задайте ему следующие свойства: Enabled=False, Interval=10
----------------
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Dim ASD As Long, ASDOLD As Long, kbArray As KeyboardBytes
Const VK_NUMLOCK = &H90
Const VK_SCROLL = &H91
Const VK_CAPITAL = &H14
----------------------
Private Sub Form_Load()
If GetKeyState(&H90) = 1 Then
Me.Visible = True
Else
Me.Visible = False
End If
Timer.Enabled = True
End Sub
-----------------------
Private Sub Timer_Timer()
ASD = GetAsyncKeyState(VK_NUMLOCK)
If ASD = ASDOLD Then Exit Sub
If ASD < 0 And ASDOLD < 0 Or ASD > 1 And ASDOLD > 1 Then Exit Sub
ASDOLD = ASD
If ASD <> 0 Then
If Me.Visible = False Then
Me.Visible = True
kbArray.kbByte(VK_NUMLOCK) = 1
SetKeyboardState kbArray
Me.WindowState = 0
Me.SetFocus
Else
Me.Visible = False
End If
End If
End Sub
|
|
|
|