Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.044 c
2-1200510681
223001
2008-01-16 22:11
2008.02.10
у меня ещё один вопрос


15-1200079941
necromancer
2008-01-11 22:32
2008.02.10
Создать аякс-лоадер


15-1199996404
КПавел
2008-01-10 23:20
2008.02.10
Горизонтальный TListBox


1-1194003778
GreySerg
2007-11-02 14:42
2008.02.10
Обработка выхода из ячейки в TStringGrid


15-1200151340
Dmitry S
2008-01-12 18:22
2008.02.10
полупрозрачное чтото :)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский