Главная страница
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.022 c
2-1200553630
NaRuTo
2008-01-17 10:07
2008.02.10
Добавление файлов в программу.


15-1198933079
Tirael
2007-12-29 15:57
2008.02.10
ктонить юзал БП со 120мм вентилятором?


2-1200307883
asdf
2008-01-14 13:51
2008.02.10
DBGrid


4-1183546348
Виктор007
2007-07-04 14:52
2008.02.10
Запись в файл


15-1199643011
vrem_
2008-01-06 21:10
2008.02.10
О, оптимальнейший из колобков)