Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.10;
Скачать: CL | DM;

Вниз

Xук на сообщение WM_SYSCOMMAND:SC_MAXIMIZE   Найти похожие ветки 

 
Углук ©   (2007-07-02 19:02) [0]

Делаю хук на сообщение WM_SYSCOMMAND:SC_MAXIMIZE/SC_MINIMIZE;


Var SysHook:HHook=0;

Function SysMsgProc(Code:Integer; WParam:LongInt; LParam:LongInt):LongInt; stdcall;
Var Msg:TMessage;
Begin
if Code = HCBT_SYSCOMMAND then
begin
if WParam=SC_MINIMIZE then
SendMessage(FOrm1.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0)
else if WParam=SC_RESTORE then
SendMessage(FOrm1.Handle,WM_SYSCOMMAND,SC_RESTORE,0);
end else CallNextHookEx(SysHook,Code,WParam,LParam);
end;

procedure Hook(Flag:Boolean;dwThreadId:DWORD); export; stdcall;
Begin
IF Flag then SysHook:=SetWindowsHookEx(WH_CBT,@SysMsgProc,HInstance,dwThreadId) Else
Begin
 UnhookWindowsHookEx(SysHook);
 SysHook:=0;
End;
End;
exports Hook;

        Внутри программы выполняется:

dwDestThreadId:DWORD;
HDLL:DWORD;
begin
dwDestThreadId:= GetWindowThreadProcessId(H, nil);
@Hook:=nil;
HDLL:=LoadLibrary(pchar("Look.dll"));
@Hook:=GetProcAddress(HDLL,"Hook");
Hook(True,dwDestThreadId);


После чего целевое приложение, на которое ставится хук, перестает реагировать
на все нажатия мыши, клавиатуры и т.д. Kак решить?


 
Rouse_ ©   (2007-07-02 22:09) [1]

Ты разрываешь цепочку.

> Kак решить?
Передавать сообщение дальше по цепочке ловушек вызовом CallNextHookEx. Пересмотри логику своей SysMsgProc.


 
Rouse_ ©   (2007-07-02 22:12) [2]

Да, еще... Var SysHook:HHook=0; - это ошибка, читай статью по ловушкам на данном сайте от Алексея Павлова. Он там все разжевал.


 
Углук ©   (2007-07-03 13:33) [3]

В статье Алексея Павлова пример не компилируется.


 
Углук ©   (2007-07-03 13:33) [4]

То есть компилируется,сорри, но выдает ошибку загрузки DLL


 
Углук ©   (2007-07-03 13:40) [5]

В общем, благодаря совету Ins"а на Delphikingdom удалось избавиться от блокировки приложения, но...теперь вылазит AV при cовершении сворачивания окна...сейчас посмотрим, в чем дело


 
Инс ©   (2007-07-03 14:00) [6]

Вот на Delphikingdom я тебе и написал в чем проблема


 
Углук ©   (2007-07-03 16:02) [7]

Проблема решилась! Спасибо Инсу. Правда, остался один вопрос.
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=53346



Страницы: 1 вся ветка

Текущий архив: 2008.02.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
2-1200910941
Дмитрий_М
2008-01-21 13:22
2008.02.10
Clipboard


15-1199017899
AlexanderMS
2007-12-30 15:31
2008.02.10
Скрипты, меняющие только что введённый в редакторе кода текст


15-1199953506
Тфьу
2008-01-10 11:25
2008.02.10
Нужен установщик GDI+ в формате msi


15-1200080417
Черный Шаман
2008-01-11 22:40
2008.02.10
Билинейная или бикубическая фильтрация с учетом TransparentColor


4-1183212316
AlexanderMS
2007-06-30 18:05
2008.02.10
Установить шрифт окон.