Отследить сочетание клавиш...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ScorpionX
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 10.08.2004 (Вт) 20:44

Отследить сочетание клавиш...

Сообщение ScorpionX » 08.12.2004 (Ср) 22:31

Как программно можно отследить нажатие сочетаний, типа: ALT+F4, SHIFT+CTRL, и т.д.?

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 08.12.2004 (Ср) 22:42

Ну, например, GetKeyboardState. А дальше прверяй, какие клавиши нажаты...
F1-F24 --- &H70-&H87
Для распознания клавишь Shift, Control, Alt:
GetKeyState, GetAnsyKeyState
LShift - &HA0
... и т.д. ...
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.12.2004 (Ср) 22:43

Обрабатывать Form_KeyDown ?
Изображение

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 08.12.2004 (Ср) 23:30

Это если форма активна...
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 09.12.2004 (Чт) 1:11

И хуки на клавиши...

HugoFlex
Новичок
Новичок
Аватара пользователя
 
Сообщения: 39
Зарегистрирован: 22.10.2004 (Пт) 21:31
Откуда: от верблюда

Сообщение HugoFlex » 09.12.2004 (Чт) 6:41

Как я понял это связано с клав шпионом 8) :twisted: , у меня тоже был такой situation. :wink:
Есть примерчик:
Text1 и Timer1 в форму
Объявляшь API:
    Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    Private Declare Function GetAsyncKeystate Lib "user32" Alias "GetAsyncKeyState" (ByVal vkey As Long) As Integer

Код: Выделить всё
Private Sub Timer1_Timer()
Dim keystate As Long
Dim Shift As Long

Shift = GetAsyncKeystate(vbKeyShift)

If (Shift And &H1) = &H1 Then
Text1 = Text1 + " {Shift} "
End If

keystate = GetAsyncKeystate(vbKeyControl)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + " {Ctrl} "
End If

keystate = GetAsyncKeystate(&HDE)
If (RUKEYSON = False And Shift = 0) And (keystate And &H1) = &H1 Then
    Text1 = Text1 + "'"
End If
   If (RUKEYSON = False And Shift <> 0) And (keystate And &H1) = &H1 Then
  Text1 = Text1 + Chr(34)
End If

Public Function RUKEYSON() As Boolean
    Dim hAppWnd As Long
    Dim ThreadID As Long
    Dim ThreadLayout As Long

hAppWnd = GetForegroundWindow

      ThreadID = GetWindowThreadProcessId(hAppWnd, ByVal 0&)
      ThreadLayout = GetKeyboardLayout(ThreadID)

If ThreadLayout = 67699721 Then
   RUKEYSON = False
ElseIf ThreadLayout = 68748313 Then
   RUKEYSON = True
End If
End Function

Дальше можешь обробатовать для остальных кнопок, c Alt+F4 тоже так же, но после проверки Alt'а проверяешь С помошью оператора OR F4. :!:
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

ScorpionX
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 10.08.2004 (Вт) 20:44

Сообщение ScorpionX » 11.12.2004 (Сб) 22:01

Это не связанно со шпионами, просто программ ка запускается вместо Эксплорера и надо отслеживать все виндовые сочетания...8)
Знать, значит уметь...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList  
cron