![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.03.2024
Сообщений: 19
|
![]()
Здравствуйте! Стоит задача отловить нажатие клавиш в различных приложениях и передать буквы в memo и записать в файл. Сооружаю стандартную несложную dll'ку клавиатурного шпиона и замечаю странность: с блокнотом всё прекрасно работает и пишется в файл. С браузером тоже. А вот с вордом в файл пишется, но в memo - нет. А если поставить брейкпоинты на месте writeln(f, key), то c вордом они не отработают, но в файл все запишется. Что за чертовщина?
Код:
Последний раз редактировалось t232006; 14.04.2024 в 20:44. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,869
|
![]()
рядом в теме https://www.programmersforum.ru/showthread.php?t=346894
как раз выложен исходник, который работает и отлавливает нажатие кнопок (пока только функциональных, но остальное можно "допилить" самому). и сделать, как вы и желаете, запись в окно Memo.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 30.03.2024
Сообщений: 19
|
![]()
да, программу вижу, исходники вижу, но исходника dll-ки нет. Есть скомпилированная HookKey.dll, но что внутри нее? Может быть, я не туда смотрю? Кроме того, у меня тоже пишет в Memo, но только если это не MS Word. А если ворд, тогда в Мемо не пишет, но в файл записывает, причем в обход брейпоинтов.
Последний раз редактировалось t232006; 15.04.2024 в 10:54. |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,869
|
![]()
есть - он в первом моём комментарии - код DLL весь к вашим услугам
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 30.03.2024
Сообщений: 19
|
![]()
Ваш код DLL не ловит MS Word, к сожалению.
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,869
|
![]()
t232006,
вот работающий. на переднем плане Word - нажимал в нём клавиши (печатал буквы) и потом переключался на программу - она просто отображает коды клавиш, т.е. ловит клавиши в активном окне Word. у меня Word 2010 если что и система Win 7x64 --------- для наглядности можешь переделать отображение кодов, чтоб было не по одному, а в строке все коды через запятую накапливало...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
Последний раз редактировалось NetSpace; 15.04.2024 в 17:06. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 30.03.2024
Сообщений: 19
|
![]()
и правда ловит! ты прямо шайтан! а как сделал? Та библиотека у тебя другая, она в 2 раза больше по объему, чем первая. Я так понял, что твой стиль основан на том, чтобы передавать сообщения через findWindow, поэтому при всем желании я не могу использовать твою библиотеку, только если обзову программу твоим именем.
Последний раз редактировалось t232006; 15.04.2024 в 21:25. |
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,869
|
![]()
обрати внимание вот на что: в библиотеке DLL есть строка
Код:
сделай своё имя, скомпилируй DLL новую и наслаждайся.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 30.03.2024
Сообщений: 19
|
![]()
да это я давно понял, вот только библиотека в exfar2 почти в 2 раза по объему больше, чем в exfar3, что говорит о том, что в exfar2 какое-то другое содержимое, нежели в exfar3.
Хотя... я заменил твою "большую" библиотеку на твою же, которая меньше, и всё работает! Странно... а почему у меня нет? Ну ладно, буду разбираться. Спасибо, ты очень помог! Последний раз редактировалось t232006; 16.04.2024 в 10:25. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 30.03.2024
Сообщений: 19
|
![]()
слушай, еще один маленький вопрос. Твой хук прекрасно работает, если не передавать LParam (а именно скан-код клавиш). В моей программе очень важно передавать именно скан-код. Да, я могу придумать механизм, как это обойти, но мне интересно, почему хук вырубается, как только вместо
Код:
Код:
Последний раз редактировалось t232006; 16.04.2024 в 11:42. |
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Использование классов | Balabek | Общие вопросы C/C++ | 8 | 24.09.2012 09:39 |
использование классов в dll | xrob | Общие вопросы Delphi | 13 | 12.04.2012 19:30 |
Использование классов | SoftKoc | Свободное общение | 5 | 11.02.2011 20:05 |
С++ использование классов | moron | Помощь студентам | 3 | 06.04.2010 00:30 |
Создание классов и использование объектов классов при написании программ в среде C++. | Frozen inside | Помощь студентам | 0 | 16.04.2009 23:18 |