глобальное блокирование буквенной клавиши на клавиатуре

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

глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ozzet » 18.08.2012 (Сб) 15:28

ВСЕМ ПРИВЕТ!
как можно заблокировать буквенную клавишу на клавиатуре во всех приложениях, а не только в проекте vb6?
Последний раз редактировалось ozzet 18.08.2012 (Сб) 17:37, всего редактировалось 1 раз.
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение Хакер » 18.08.2012 (Сб) 16:22

А не зловред ли ты делаешь? Расскажи правдоподобную версию того, зачем это может быть нужно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ozzet » 18.08.2012 (Сб) 16:29

все очень просто)
есть граф планшет( самый простейший) вот хочу повысить его фунционал)
путем перехвата и назначение кнопок на 1 кнопку( потому что нажатия кнопок самого планшета перехватывать не умею) потому пошол по пути наименьшего сопротивления( для меня)
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение Хакер » 18.08.2012 (Сб) 16:32

Пока связь не прослеживается. Зачем блокировать буквенную клавишу? Откуда у планшета буквенная клавиша?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ozzet » 18.08.2012 (Сб) 16:38

я так понимаю с планшетами граф вы не общались)
у планшета есть сие перо( с 2 кнопками) это кнопки я могу назначить на 2 любые кнопки клавиатуры) а я хочу чтоб при 2 нажатии( в стандартной проге токого нет) к примеру срабатывала другая кнопка а при зажиме 3я)
если быть еще проще то выглядит это так:
перо(1 кнопка)--> m(на клаве) ----2 нажатия ---->b(на клаве) но когда я жму 2 раза у меня получаеться не b а mb
зачем спрашивал если не знаешь ответа?
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение Хакер » 18.08.2012 (Сб) 17:52

Либо ты пишешь грамотно: без ошибок и логически связано; либо тему ждёт печальная участь.
Спрашивал я затем, что есть подозрение, что ты пишешь зловред.
А способов проделать задуманное я знаю тысячу. Но знания ничтожны, только способность находить нужные знаний за кратчайшее время при первой необходимости имеет ценность.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ozzet » 18.08.2012 (Сб) 17:56

а по теме будут посты? а то левые расспросы да ещё и угрозы) в любом случае если бы я что то такое и задумал( я про "зловред") ты бы об этом не узнал) тему можешь закрывать от тебя я понимаю толку мало тут) только оффтоп(
или же не мешай дай шанс другим помочь в этой теме)
на худой конец если кто то думает что данными советами могут воспользоваться "зловреды"( которые как я полагаю все это уже знают и умеют) пишите пм)
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ark » 19.08.2012 (Вс) 9:16

Ось какая?
Если 2К+, то ищи vb6+setwindowshookex+wh_keyboard_ll (кстати, для семёрки и Висты смотри комменты http://msdn.microsoft.com/en-us/library ... 85(v=vs.85).aspx)
Если 9х и хочешь именно ВБ - придётся извращаться. Я извращался с WH_JOURNALRECORD (http://www.freevbcode.com/ShowCode.asp?ID=1610) - кстати, в НТях тож работает.

ЗЫ. Для зловреда достаточно rundll32 keyboard,disable в автозагрузку :D

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение Хакер » 19.08.2012 (Вс) 9:19

ark писал(а):Если 9х и хочешь именно ВБ - придётся извращаться.

Не придётся.

И вообще, если всё как он пишет, проблема должна быть решена на уровне раскладок и на уровне трансляции сообщений (TranslateMessage в Message Loop).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ark » 19.08.2012 (Вс) 9:44

Хакер писал(а):TranslateMessage в Message Loop

Глобальный message Loop на VB? :shock:
Насколько я понял, ТС нужно что-то типа TSR'a на VB - запустил и он во всех приложениях (хотя целевое, похоже, только одно - интерфейс этого самого планшета) буква a меняется на b

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение Хакер » 19.08.2012 (Вс) 10:09

ark писал(а):Глобальный message Loop на VB? :shock:

Причём здесь это? Message Loop получает информацию о нажатии на физические клавиши. Затем он преобразует информацию о нажатии физических клавишь в информацию о нажатии логических клавишь. Сопоставление между физическими и логическими клавишами делается функцией TranslateMessage на основе текущей раскладки.

Если надо, чтобы при нажатии физической клавиши «M» не вводилась буква «M», надо просто использовать применять изменённую раскладку, в которой физическая клавиша M конвертировалась бы в какую-то логическую служебную клавишу.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ark » 19.08.2012 (Вс) 10:42

Теперь я не понимаю - мы что, про разные loop'ы?
Я имел в виду
Код: Выделить всё
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
}

сообщение от клавы получает активное окно (ну, точнее, у которого Input focus), а не все. Что ж, субклассить все открытые окна?

Упс, не дочитал второй абзац, теперь дошло, что этот loop из keyboard.sys
И что, это проще/правильней чем WH_Keyboard_LL?

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ozzet » 19.08.2012 (Вс) 11:13

Код: Выделить всё
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) _
As Integer
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
   
Const VK_N = &H4E
Const VK_B = &H42
Const VK_H = &H48
Dim x As Long

Private Sub Timer1_Timer()
If GetAsyncKeyState(VK_N) Then
x = x + 1
Select Case x
Case 1
Call keybd_event(VK_H, 0, 0, 0)
Case 2
x = 0
Call keybd_event(VK_B, 0, 0, 0)
End Select
End If
End Sub

программа будет использоваться в фотошопе, но буква N все портит
как сейчас 1 нажатие NH , 2 нажатие NB
как надо 1 нажатие H , 2 нажатие B
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ark » 19.08.2012 (Вс) 11:39

В прынципе, с помощью таймера можно написать логгер, хотя пожрёт все ресурсы. Для перехвата нужен хук. Неуж-то поисковика нету?
Набери vb6+setwindowshookex+wh_keyboard_ll

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ozzet » 19.08.2012 (Вс) 11:44

ну мне 2 кнопки так что не пожрет)
поиск есть( даж примеры видел правда не по моему вопросу) но думал вдруг вы что нибудь по проще предложите) с хуками я дело не имел потому не знаю что да как)
+ еще dll надо создавать чтоб он глобальным был( а это для меня вообще темный лес)
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ark » 19.08.2012 (Вс) 12:08

ozzet писал(а):ну мне 2 кнопки так что не пожрет
Жрут не кнопки, жрёт таймер
ozzet писал(а):+ еще dll надо создавать чтоб он глобальным был
для wh_keyboard_ll - не надо

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение Хакер » 19.08.2012 (Вс) 14:24

ark писал(а):Теперь я не понимаю - мы что, про разные loop'ы?
Я имел в виду
Код: Выделить всё
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
}

сообщение от клавы получает активное окно (ну, точнее, у которого Input focus), а не все. Что ж, субклассить все открытые окна?

Упс, не дочитал второй абзац, теперь дошло, что этот loop из keyboard.sys
И что, это проще/правильней чем WH_Keyboard_LL?

Нет, ты не понял. Не надо вообще писать никакого кода. Надо взять майкрософтовскую утилиту для редактирования раскладок, и сделать свою собственную раскладку.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ark » 20.08.2012 (Пн) 4:13

Хакер писал(а):Не надо вообще писать никакого кода
Из куска кода ТС я понял, что ему надо переопределять одну клавишу (N). N_Click = H, N_DblClick = B, т.е. переопределять раскладку по кликам - так что код всё равно нужен. Хотя идея интересная. Я б в этом случае набахал бы пару десятков раскладок с разницей в 1 vkey, и использовал бы одну кнопку как переключатель раскладок, тогда второй можно было бы весь алфавит написать.
ЗЫ. А может и не прокатить - зависит от того, на каком уровне драйвер этого пера с железом взаимодействует. Скорее всего, он скан код генерирует. И аддон соответствующего приложения (Фотошоп, в данном случае) этот скан и получает. И пофиг ему раскладка.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ozzet » 25.08.2012 (Сб) 19:25

всем спасибо)
заблокировать кнопку я разобрался как)
есть еще пару вопросов по этой теме но я пока не понял как их сформулировать)
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: глобальный перехват клавиши на клавиатуре

Сообщение ozzet » 08.09.2012 (Сб) 22:55

продолжаю данную тему чтобы не потерять суть и не создавать лишние вопросы от юзеров)
как сделать так, чтобы при зажиме клавиши на клавиатуре, печатался один символ, а не длинная очередь?
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение Хакер » 08.09.2012 (Сб) 23:32

Куда печатался? В отдельно взятый текстовый контрол? Во все контры отдельно взятой программы? Во все программы отдельного взятого сеанса?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ozzet » 08.09.2012 (Сб) 23:37

да не важно куда) главное чтоб происходило сие деиствие.
другими словами мне надо чтоб происходило одно нажатие кнопки N а не многоразовое при зажиме её.
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение Хакер » 08.09.2012 (Сб) 23:42

ozzet писал(а):да не важно куда)

Важно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ozzet » 08.09.2012 (Сб) 23:47

я тестирую на блокноте) но данная программа будет использоваться в фотошопе как я и писал ранее)
я перехватил нажатие буквы N хуком WH_Keyboard_LL, зажал кнопку N и у меня получается череда букв N, а мне надо чтоб я зажал и напечаталась одна буква N.
мне надо:
первый раз нажал N сработал перехват и нажалась кнопка B
второй раз нажал кнопку N сработал перехват и нажалась кнопка A,
зажал кнопку N сработал перехват и нажалась кнопка М.
Последний раз редактировалось ozzet 08.09.2012 (Сб) 23:50, всего редактировалось 1 раз.
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение Хакер » 08.09.2012 (Сб) 23:48

ozzet писал(а):и у меня получается череда букв N

В каком именно месте она получается?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ozzet » 08.09.2012 (Сб) 23:52

в блокноте.
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ark » 09.09.2012 (Вс) 12:55

ozzet писал(а):я перехватил нажатие буквы N хуком WH_Keyboard_LL, зажал кнопку N и у меня получается череда букв N

RTFM несколько раз по WH_Keyboard_LL. Если из CallBack возвращаешь 0 - сообщение проходит дальше, если не ноль - блокируется. Смотри wParam на предмет WM_KEYDOWN/WM_KEYUP и соответсвенно тормози/пропускай сообщение

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: глобальное блокирование буквенной клавиши на клавиатуре

Сообщение ozzet » 09.09.2012 (Вс) 13:08

ark писал(а):
ozzet писал(а):я перехватил нажатие буквы N хуком WH_Keyboard_LL, зажал кнопку N и у меня получается череда букв N

RTFM несколько раз по WH_Keyboard_LL. Если из CallBack возвращаешь 0 - сообщение проходит дальше, если не ноль - блокируется. Смотри wParam на предмет WM_KEYDOWN/WM_KEYUP и соответсвенно тормози/пропускай сообщение

я вот посмотрел wParam даже создал тему тут но ответа не получил( там как значение цифровое прописывать? у WM_KEYDOWN/WM_KEYUP ) а то я примеров в сети не нашёл :(
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)


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

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

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

    TopList  
cron