![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
:Приветсвую
Делаю ловушку на клавиатуру. Использую Hook, использую DLL. Все норм работает, но есть проблема - при запуске проги все тормозит. TaskMan 100%ую загрузку ЦП показывает. Видать получился глобальный Хук, а хотелось чтоб не тормозило. Помогите плз -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Я тоже когда-то пытлся делать ловушки, осталось вот несколько примеров, незабывай проверять раскладку клавиатуры.
Присоединённый файл ( Кол-во скачиваний: 80 ) ![]() |
|||
|
||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
Можно использовать getkeystate тогда и без дллки обойтись можно.
|
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
Budy Покажи код.
|
|||
|
||||
Budy |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
Прога, запускающая DLL'ку:
Прога в памяти весит, всего около 300 Кб имеет. А вот DLL'ка:
PS.В коде (здесь строки 75-76) пробовал писать Result:=CallNewxt...... Тогда клавиши не возращаются нужным приложениям. Bes, расскажи поподробнее. Просто пробовал в EXE'шник пихнуть - когда на клаве щелкаешь кнопки при других окнах, они закрываются. Это сообщение отредактировал(а) Budy - 20.4.2005, 17:25 -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
||||
|
|||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
Убери repeat until false;
|
|||
|
||||
Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
RAdmin, дык тогда ничего работать и не будет
-------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
Ты пробовал?
|
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
То верхнее это моя оценка на вскидку.
А вот специально решил посмотреть что к чему: Почему в CallNextHookEx(HK,Code,wParam,lParam); переменная "HK" а тут hook:=SetWindowsHookEx(WH_KEYBOARD,@gethook,hInstance,0); hook ? Они хоть потом связываются или как? Я заменил HK на Hook. Загузчик ...... implementation function StartHOOK: Longint; external 'getkeys.dll' name 'StartHOOK'; {$R *.dfm} procedure ..... begin StartHOOK; end; И всё работает пучком. ЗЫ: так как код процедуры "AddKey" ты не показал то я туда вставил бональный ShowMessage. (для теста) |
|||
|
||||
Budy |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
RAdmin, я с "HK" и "hook" перепутал, короче это одна и та же переменная, иначе "hook: HHOOK;"
AddKey - здесь я сохраняю клавиши в оперативную память, пробовал в файл сохранять - возникают проблемы из за загрузки ЦП. Добавлено @ 14:45
Дак прога тогда закрывается. -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
||||
|
|||||
Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
Работать то работает, да вот память сильно грузит :\ -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
Budy Ну не знаю, то что я проверял работало без напрягов.
Пришли мне на мыло весь исходник, или тут выложи (только в аттаче). exxxxx [a] gmail.com |
|||
|
||||
Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
RAdmin, дак я весь и выложил. Есть прога (там всего 5 строчек), которая запускает DLL и держит его в памяти. DLL в свою очередь ставит ловушку, и проверяет на нажатие клавиш на клавиатуре. Три процедуры, что я не расписывал не представляют из себя ничего серьезного - у все сводил к минимуму, просто получал Key_Name (GetKeyNameText(lParam, Key_Name, sizeof(Key_Name));) и записывал в файл. Всеравно всю память использует.
Может ловушка "слишком много на себя берет"? -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
Ага, в этом все и дело. Я переделал запускающую прогу чтоб без зацикливания была, все встало на место Добавлено @ 20:57 А я себе в голову вбил, что ето все DLL'ька виновата ![]() -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
ну вот и замечательно
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |