Есть у нас компонент KeyHook который перехватывает нажатие клавиш. Однако данный компонент вызывает стойкий паркинсон у 99% антивирусов! о чем написано даже в справке к этому компоненту!
Так же есть компонент keyboard который не вызывает никаких нареканий со стороны антивирусов, но вот с помощью этого компонента можно причитать состояние только одной, отдельно взятой кнопки! И вот меня мучает вопрос, а как можно перехватывать нажатие клавиш без срабатывания антивируса? KeyHook сразу понятно не наш вариант, но и запускать одновременно 101 компонент keyboard будет несколько глупо!
Как быть? Какие могут быть варианты???
Этот топик читают: Гость
Ответов: 204
Рейтинг: 2
|
|||
карма: 1 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
ogrif писал(а): можно причитать состояние только одной, отдельно взятой кнопки!Это кто такое сказал, а это для чего тогда
|
|||
карма: 22 |
|
Ответов: 204
Рейтинг: 2
|
|||
nesco писал(а): Это кто такое сказал, а это для чего тогдаKeys=Содержит массив из 256 элементов для всех клавиш. Если элемент массива равен 1, то соответствующая ему клавиша нажата, если 0 - отпущена|3|13 А ведь и правда! Вот ведь!!! Неоднократно пользовался этим компонентом и не замечал! Наверно старею! Спасибо! ------------ Дoбавленo в 10.36: nesco писал(а): Keys=Содержит массив из 256 элементов для всех клавиш. Если элемент массива равен 1, то соответствующая ему клавиша нажата, если 0 - отпущена|3|13Сегодня поэкспериментировал с этой точкой и что-то у меня ничего не выходит! В справке примера работы с этой точкой тоже нет. Что не так я делаю?
|
|||
карма: 1 |
|
Ответов: 8930
Рейтинг: 823
|
|||
ogrif, code_35389.txt
|
|||
карма: 19 |
| ||
файлы: 1 | code_35389.txt [3.8KB] [271] |
Ответов: 204
Рейтинг: 2
|
|||
Леонид,
Ага, спасибо! |
|||
карма: 1 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
карма: 25 |
| ||
файлы: 1 | code_35390.txt [1KB] [256] |
Ответов: 204
Рейтинг: 2
|
|||
Леонид,
А как по этой схеме прочитать нажатие и отпускание кнопки? Я пробовал вызывать событие по условию, что если текущий элемент массива = 1 то это нажатие. Но что-то не выходит.
|
|||
карма: 1 |
|
Ответов: 8930
Рейтинг: 823
|
|||
ogrif, вы же видите, что в массиве записывается ПРЕДЫДУЩЕЕ состояния клавиш, соответственно "предыдущее/текущее"="01" нажатие, "10" отпускание code_35393.txt
|
|||
карма: 19 |
| ||
файлы: 1 | code_35393.txt [3.6KB] [258] |
Ответов: 204
Рейтинг: 2
|
|||
Леонид писал(а): ogrif, вы же видите, что в массиве записывается ПРЕДЫДУЩЕЕ состояния клавиш, соответственно "предыдущее/текущее"="01" нажатие, "10" отпускание code_35393.txtкажется сообразил! Спасибо!! )) |
|||
карма: 1 |
|
Ответов: 204
Рейтинг: 2
|
|||
Прикрутил к схеме определение координат мышки и сохранение в файл. Но вот столкнулся с тем что не знаю как воспроизвести записаную последовательность??!!
Время отчета таймера 24мс. но строчки пишутся только когда нажата кнопка или происходит движение мышкой. что-то я совсем запутался! ничего вообще не приходит на ум. Как мне воспроизвести все те клики что я записал???
|
|||
карма: 1 |
|
Ответов: 1343
Рейтинг: 31
|
|||
ogrif, для начала лучше привести то что выходит в разбираемый формат (если тебе нравятся подписи надписи... делай таблицу с калонками, и дели по калонкам делиметром, предположим это эдитор такой)
------------ Дoбавленo в 19.54: что то не понятно накой.... там время такое нарастающее без сброса???? |
|||
карма: 2 |
|
Ответов: 8930
Рейтинг: 823
|
|||
ogrif, совсем не обязательно постоянно записывать положение мыши, достаточно только при клике, да и интервал времени зачем нужен Коллега Rysik правильно заметил, что надо продумать формат записи для лёгкой расшифровки.
Пример записи: code_35498.txt Пример расшифровки: code_35499.txt |
|||
карма: 19 |
| ||
файлы: 2 | code_35498.txt [4.7KB] [224], code_35499.txt [1.8KB] [255] |
Ответов: 1343
Рейтинг: 31
|
|||
вот примерно так выглядит записывающий софт:
code_35500.txt только доделай систему выдачи времени на клики ------------ Дoбавленo в 20.13: Леонид писал(а): не обязательно постоянно записывать положение мыши, достаточно только при клике, да и интервал времени зачем нуженвот тут уже могу поспорить... время всётаки надо, ибо скажем есть у нас в интернете мануалы всякие где к примеру заранее записывают движения мышки и потом воспроизводят, юзер просто неуспеет всё углядеть за долю секунды как произойдёт 100 эмуляций и перемещений а вот со временем мы уложимся так как и записывали |
|||
карма: 2 |
| ||
файлы: 1 | code_35500.txt [5.4KB] [261] |
Ответов: 5227
Рейтинг: 587
|
|||
Идея не плоха сделать макрорекордер (типа визуальные подсказки для ПО и т.п) и сделать бы ЭТО на хуках НО, в Win-7/8 SetWindowsHookEx не пашет. Вот пример для ХР recorder_.zip
Может кто сможет сиё заставить работать в семёрке |
|||
карма: 4 |
| ||
файлы: 1 | recorder_.zip [3.4KB] [260] |
Ответов: 4631
Рейтинг: 749
|
|||
Попробуй
HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @RecordProc, HInstance, GetCurrentThreadId); |
|||
карма: 26 |
|