![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
А как мона сделать чтоб DLL передавала какието параметры вызвающей программе?
Ну например в этом случае, DLL получила клавишу и нужно ее передать программе.. -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
||||
|
||||
vintch |
|
||||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 24.4.2005 Репутация: нет Всего: нет |
Это в Win-проге использовать просто нельзя! ![]() Нужно:
PS. SetTimer и всё что с ним связано - чисто для показухи ![]() |
||||
|
|||||
Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
vintch, ага, я уже понял
![]() -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
Dr.No_xXx |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
Зачем? и какие именно? |
|||
|
||||
Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
RAdmin, я мона полегче примерчик? Я шото там запутался
![]() Dr.No_xXx, посмотри эту тему. Я кидал код, там процедуре "procedure AddKey(Key: String);" я передаю полученную нажатую клавишу. Дак вот спрашиваю, как эту "Key: String" - клавишу передать в главную прогу? -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
Rouse_ |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 5 Всего: 29 |
Ты работаешь под NT? Если так то не нужны никакие лишние DLL. Вот смотри примерчик:
|
||||
|
|||||
vintch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 24.4.2005 Репутация: нет Всего: нет |
Да, признаться, давно я на MSDN небыл
![]() Rouse, ещё новичком себя называет ![]() PS. А можно ещё так: не repeat until false; а repeat sleep(10) until false; ![]() ![]() Это сообщение отредактировал(а) Girder - 26.4.2005, 13:54 |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 5 Всего: 29 |
Ну можно и application.HandleMessage или ее аналог написать. Самый ненапряжный вариант ![]() |
|||
|
||||
Rouse_ |
|
||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 5 Всего: 29 |
Ну чтож, давайте теперь разберем ошибки.
dsergey: Папка D6Hook1 файл hook.pas смотрим код:
Теперь вопрос. С каких пор WParam поменяло значение с двойного слова на одинарное? Правильней будет Longint(DWORD, Cardinal) но никак не word. Самое правильное - специально определенный тип для всех hook procedures объявленный в модуле Windows.pas под названием WPARAM; Собстенно вот все используемые типы:
Исследуем далее код функции function HookProc того же модуля
Довольно оптимистичное начало. Благо что данный код исполняется в локальном приложении, в противном случае была бы разбита цепочка хуков и никто не смог бы гарантировать правильную работу не только своих, но и чужих приложений... Ну и естестенно довольно странно видеть проверку при уничтожении хука:
...при ее полном отсутствии на момент создания:
Папка D6Hook2DLL, модуль keyboardhook.dpr: смотрим код:
В данном случае из-за объявления stdcall, абсолютно здесь не уместного никогда в жизни не отработает сообщение DLL_PROCESS_DETACH Далее абсолютно не понятен двойной вызов следующей функции на момент инициализации библиотеки.
Папка D6Hooks модуль HookDll.pas Та же ошибка с word, ну и явно безграмотное написание библиотеки с разбитием цепочки хуков, так как автор видимо забывает что все экземпляры библиотеки разнесены по различным адресным пространствам приложений и не потрудился создать единые экземпляры констант чере отображаемые в память процесса файлы. Предыдужий пример был написан намного лучше. Примеры в архивах даже не хочется комментировать. По поводу примера от RAdmin. Ну это немного не из той серии, но очень грамотно написаный пример... Мой пост собственно не указание на ошибки, а указание на возможные неприятности при бездумном использовании кода... Это сообщение отредактировал(а) Rouse_ - 26.4.2005, 20:05 |
||||||||||||||
|
|||||||||||||||
RA |
|
||||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
Дык человек вопрос задал :
Естесно потом возникнет вопрос а как текст передать. и тд. А что касатется хука на клаву то мой пример уже давно пылится в кладовке. (тотже принцип что и у тебя, толкьо с перламутровыми пуговицами ) Это сообщение отредактировал(а) RAdmin - 26.4.2005, 20:56 |
||||
|
|||||
Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
RAdmin, Rouse_, пасибо, ребята! Оба помогли, у обоих код позаимствовал
![]() -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
Denis-delphist |
|
|||
Unregistered |
Уменьшь её на сколько можно и пусть результат не в прогу пишется, а в LOG файл, не указывая время(Только беквы и цифры). Ещё можно эту штуку коммандной строкой сделать!!! Также можно сделать так, чтобы не все буквы запоминались, а некоторые.
![]() Это сообщение отредактировал(а) Girder - 27.4.2005, 23:57 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |