- Код: Выделить всё
For VirtualKeyCode = 0 To 255
if VirtualKeyCode=KeyWait Then GoTo 20
If GetAsyncKeyState(VirtualKeyCode) <= -32767 Then
GoTo 100 'нажата не ожидаемая клавиша
End If
20 Next
For VirtualKeyCode = 0 To 255
if VirtualKeyCode=KeyWait Then GoTo 20
If GetAsyncKeyState(VirtualKeyCode) <= -32767 Then
GoTo 100 'нажата не ожидаемая клавиша
End If
20 Next
Space писал(а):Как определить нажата ли в текущий момент любая клавиша глобально в системе...
Space писал(а):А мне всего-то надо отлавливать глобально комбинацию Ctrl+Pass для активации окна.
Space писал(а):А мне надо типа Ctrl+123:)
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Sub Timer1_Timer()
Dim Ctrl, Key1, Key2 As Byte
If GetAsyncKeyState(vbKeyControl) < 0 Then Ctrl = 1
If GetAsyncKeyState(vbKey1) < 0 Then Key1 = 1
If GetAsyncKeyState(vbKey2) < 0 Then Key2 = 1
If GetAsyncKeyState(vbKey3) < 0 And Ctrl = 1 And Key1 = 1 And Key2 = 1 _
Then MsgBox "Нажаты Ctrl+1+2+3"
End Sub
Space писал(а):Пипец, я дождусь объяснения по поводу наездов на мой GoTo?
For VirtualKeyCode = 0 To 255
if VirtualKeyCode <> KeyWait AND GetAsyncKeyState(VirtualKeyCode) <= -32767 Then Exit For
Next
Space писал(а):что за спагетти? Я уже привык так писать, чтобы брейкпоинты ставить. А насчёт 100, я не такой наивный, чтобы ставить код ещё после Next и перед 100, если это имелось ввиду - опять таки привычка старого программування ходить по меткам А для GoTo 20 есть замена?
For VirtualKeyCode = 0 To 255
if VirtualKeyCode<>KeyWait Then
If GetAsyncKeyState(VirtualKeyCode) <= -32767 Then
GoTo 100 'нажата не ожидаемая клавиша
End If
End If
Next
For VirtualKeyCode = 0 To 255
if VirtualKeyCode=KeyWait Then GoTo 20
If GetAsyncKeyState(VirtualKeyCode) <= -32767 Then
GoTo 100 'нажата не ожидаемая клавиша
End If
20 Next
100
...any code...
For VirtualKeyCode = 0 To 255
if VirtualKeyCode<>KeyWait Then
If GetAsyncKeyState(VirtualKeyCode) <= -32767 Then
Exit For 'нажата не ожидаемая клавиша
End If
End If
Next
Space писал(а):...мне всего-то надо отлавливать глобально комбинацию Ctrl+Pass для активации окна.
...
...мне надо типа Ctrl+123:)
...
...хук не подходит. Каспер ругается...
Пипец, я дождусь объяснения по поводу наездов на мой GoTo?
2 a=inputbox ("Введите а")
b=inputbox ("Введите b")
if isNumeric(a) and isNumeric(b) then goto 6 else goto 3
6 if a<100 then goto 1 else goto 3
if b>100 then goto 1 else goto 4
3 msgbox "Все плохо в a":goto 2
4 msgbox "Все плохо в b":goto 2
1 c=a+b
if c>7 then goto 2
msgbox c
do
a=inputbox ("Input a")
b=inputbox ("input b")
if isNumeric(a) and isNumeric(b) then
if a<100 then
if b<100 then
c=a+b
if c>7 then msgbox "All right"
else
msgbox "b плохая"
end if
else
msgbox "a плохая"
end if
else
msgbox "a или b не цифры"
end if
loop while c<7
Сейчас этот форум просматривают: Google-бот и гости: 64