![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| cot |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 4.6.2003 Репутация: нет Всего: нет |
При установке ловушки виснет мышь. Где ошибка не пойму.
library Project2; {$R *.res} uses windows,SysUtils, messages,Dialogs; var SaveExitProc : Pointer; // дескрипторы ловушек HKill: hHook = 0; function CBTProc(code: integer; wParam: integer; lParam: integer): integer stdcall; var ClassName:array[0..255] of AnsiChar; begin if code >= 0 then begin if Code= HCBT_CREATEWND then begin GetClassName(wParam, ClassName, 256); if (AnsiCompareStr(ClassName, 'Solitaire')=0) then if (FindWindow(ClassName,nil)<>0) then begin Result:=0; ShowMessage('Косынка есть!') end else begin Result:=1; Result:=CallNextHookEx(hKill, Code, wParam, lParam); ShowMessage('Косынки нет!') end end; end else Result:=CallNextHookEx(hKill, Code, wParam, lParam); end; procedure StartKill; // установка ловушки begin HKill :=SetWindowsHookEx(WH_CBT, @CBTProc, hInstance, 0); if HKill = 0 then MessageBox(0, 'Ловушка не установилась!', 'Ошибка', mb_Ok); end; procedure RemoveHookKill; // удаление ловушки begin if HKill<>0 then begin UnhookWindowsHookEx(HKill); HKill := 0 end; end; procedure RemoveAllHooks; // удаление всех установленных ловушек begin if HKill<>0 then UnhookWindowsHookEx(HKill); ExitProc := SaveExitProc; end; exports StartKill, RemoveHookKill; begin // задание процедуры выхода, снимающей ловушки SaveExitProc := ExitProc; ExitProc := @RemoveAllHooks; end. |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
cot Какая винда?
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
<Spawn> Win98
|
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
До Вин 2000 хендл, возвращаемый SetWindowsHookEx, необходимо делать доступным для всех процессов, например, используя Memory Mapped Files(смотри CreateFileMapping+MapViewOfFile), так как при внедрение DLL в новое адресное пространство твоя HKill будет иметь совсем не то значение, потому что будет принадлежать другому процессу.
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| cot |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 4.6.2003 Репутация: нет Всего: нет |
Спасибо!
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |