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

Вниз

Hook: что неправильно?   Найти похожие ветки 

 
Alx2 ©   (2002-02-13 11:58) [0]

Делаю hook из DLL:

Function SetHook: HHOOK; Stdcall;
Begin
If (AInstance = LongWord( - 1)) Then
AInstance := HInstance;
hhk := SetWindowsHookEx(WH_CBT,
@ShellProc,
HInstance,
0
);
Result := hhk;
End;


Вот ShellProc, которая не работает для других приложений, а для родного, вызывающего SetHook, работает:


Function ShellProc(nCode: Integer; WPARAM, LPARAM: Integer): Integer; Stdcall;
Var
Str : String;
CBTCreateWnd: PCBTCreateWnd Absolute LPARAM;
Begin
Result := CallNextHookEx(hhk, nCode, WPARAM, LPARAM);
If (nCode = HCBT_CREATEWND) And (Pointer(LPARAM) <> Nil) And (CBTCreateWnd^.lpCs <> Nil) Then
Begin
If MyWindow = 0 Then
MyWindow := FindWindow("TWatcherForm", "WatcherForm");
Str := CBTCreateWnd^.lpCs^.lpszClass;
SendMessage(MyWindow, WM_SETTEXT, 8101973, Integer(PChar(Str)));
End;
End;


А если исправить так:

Function ShellProc(nCode: Integer; WPARAM, LPARAM: Integer): Integer; Stdcall;
Var
Str : String;
CBTCreateWnd: PCBTCreateWnd Absolute LPARAM;
Begin
Result := CallNextHookEx(hhk, nCode, WPARAM, LPARAM);
If (nCode = HCBT_CREATEWND) And (Pointer(LPARAM) <> Nil) And (CBTCreateWnd^.lpCs <> Nil) Then
Begin
If MyWindow = 0 Then
MyWindow := FindWindow("TWatcherForm", "WatcherForm");
SendMessage(MyWindow, WM_SETTEXT, 8101973, Integer(CBTCreateWnd^.lpCs^.lpszClass));
End;
End;

- работает всегда.

Что делаю не так? Где грабли?
Что сделать, чтобы работал первый (именно нужный мне) вариант?



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

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

Наверх




Память: 0.46 MB
Время: 0.013 c
3-57659
kronprince
2002-03-28 22:34
2002.04.18
Скорость работы TClientDataSet при фильтрации ?


1-57734
Sergey Karagodin
2002-04-05 09:21
2002.04.18
Какое событие


14-57870
Королев
2002-03-10 12:14
2002.04.18
Как навсегда получить доступ к роутеру?


1-57685
dr_neo_rostov
2002-04-07 17:43
2002.04.18
Update for Delphi 6


1-57683
Roman9
2002-04-07 16:33
2002.04.18
Как запустить из одной программы другую