Главная страница
    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.05 c
15-1199628190
kotenok
2008-01-06 17:03
2008.02.10
Перенос базы данных на новый компьютер


2-1200242920
savyhinst
2008-01-13 19:48
2008.02.10
Динамическое создание свойств


15-1199867455
Piroxyline
2008-01-09 11:30
2008.02.10
Про винду *rofl*


15-1199988032
Вера
2008-01-10 21:00
2008.02.10
база данных Аптека


2-1200417720
сопляк
2008-01-15 20:22
2008.02.10
TToolBar - ошибка винды или VCL?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский