Šta je novo?

Probirljivi message handler

hwfanatic

Čuven
Učlanjen(a)
13.02.2002
Poruke
659
Poena
630
Cilj: Treba da ugasim jednu aplikaciju iz druge.
Sredstvo: Malo sam istrazivao, i kao univerzalno resenje se namece RegisterWindowMessage, Send(Notify)Message i odgovarajuci message handler koji ce da fata te poruke.
Problem: Ovo jednostavno ne radi, tj. OnMessage event objekta tipa TApplication ne reaguje na takve poruke. Evo sta kaze Delphi dokumentacija o ovome:
OnMessage only receives messages that are posted to the message queue, not those sent directly with the Windows API SendMessage function.
Ima li neko neku ideju?
 
Koristi Api FindWindow da nadjesh aplikaciju koju hocesh da ugasish i onda kad dobijesh handle ugasi je.
 
To je bio moj prvi izbor naravno, samo se nametao jedan problem... Naime, tu aplikaciju ne bih mogao da debagujem zbog postojanja design forme sa istim imenom i klasom od koje potice. U vreme kada sam postavljao thread, trazio sam najelegantnije resenje za problem, ali sam na kraju batalio jer se ispostavilo da previse komplikuje situaciju. Opredelio sam se za manje elegantno, ali funkcionalno parce koda...

var
AHandle: THandle;

begin
AHandle := FindWindow('TLanser', 'Lanser');
if ((AHandle = 0) and (ParamStr(1) <> '-kill')) or (ParamStr(1) = '-ide')
then begin
Application.Initialize;
Application.ShowMainForm := false;
Application.CreateForm(TLanser, Lanser);
Application.Run;
end
else if ParamStr(1) = '-kill'
then PostMessage(AHandle, WM_QUIT, 0, 0);
 
Poslednja izmena:
Nazad
Vrh Dno