Mam pytanie trochę teoretyczne. Mam typowego hooka na główne okno
Application.HookMainWindow(AppHook);
gdzie sobie sprawdzam
function TMain.AppHook(var Mes: TMessage): Boolean;
begin
result:=false;
if (Mes.Msg = mes1) then...else
if (Mes.Msg = mes2) then...else
(itd)
można oczywiście rownież tak obsłużyć komunikat, co również robię:
procedure Advance(var Mes: TMessage); message ADVANCE;
Teraz pytanie jaka jest różnica i czy są jakieś zalecenia odnośnie stosowania obydwu metod ?
Jeżeli dobrze rozumiem, to metoda pierwsza wyłapuje wszystkie komunikaty, natomiast druga obsługuje tylko jeden. Kiedy jednak chcąc mieć scentralizowaną obsługę komunikatów (tu ponawiam pytanie o zalecenia) przeniosłem dajmy na to procedure Advance z powyższego przykładu do AppHook, gdzie sam wysyłam komunikat w innym module pod Main.Handle :
SendMessage(Main.Handle,ADVANCE,
komunikat ADVANCE nie zostaje obsłużony.
Inne komunikaty otrzymywane z systemu lub wysyłane przeze mnie całkiem spoza aplikacji
SendMessage(WindowFromProcessID(PI.dwProcessId),WM_COPYDATA,
są wyłapywane.
Więc pytania:
1)czy dobrze rozumiem różnice czy jest ich więcej ?
2)zalecenia czy jak kto lubi ?
3)dlaczego mój komunikat nie jest wyłapywane w hooku ?
//edit: literówka