Tak, wiem, już poprawiłem tą grubą i czarną jak smoła czcionke na piękną, małą - kruczoczarną
No tak. Ale ja nie chcę mieć DLL-a, nawet tego z madshi.net. Chcę mieć wszystko w jednym programie, zauważyłem, że gdy moja aplikacja minimalizuje się do Traya to nadal przechwytuje komunikaty na klawiature, więc może DLL nie jest wcale mi potrzebny kiedy program jest uruchomiony (albo w XP tak jest przynajmniej). W każdym razie przechwytuje komunikat WM_JAKISTAM i co ?
chwilka...
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TMain = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
end;
var
Main: TMain;
implementation
{$R *.dfm}
var
MainHook : HHOOK; // wskazanie na hooka
function MojHook(Code: Integer; wParam : WPARAM;
lParam : LPARAM): Longint; stdcall;
var
Buffer : TEventMsg; // deklaracja struktury
begin
Result := 0; // wartość zwracana przez procedurę
Buffer := PEventMsg(lParam)^; // uzyskanie danych poprzez odczytanie wskaźnika
if Buffer.Message = WM_QUERYENDSESSION
{powiedzmy wyłączanie systemu}
then
begin
//zablokuj tten przeklęty message! jak to zrobić?
end;
end;
procedure TMain.FormCreate(Sender: TObject);
begin
{ załóż hooka }
MainHook := SetWindowsHookEx(WH_JOURNALRECORD, MojHook, hInstance, 0);
if (MainHook = NULL) then
raise Exception.Create('Nie ma bata! Hooka nie bedzie!');
end;
procedure TMain.FormDestroy(Sender: TObject);
begin
UnhookWindowsHookEx(MainHook);
end;
end.
end.
no i jak to zrobić, żeby zablokować ten komunikat?
od razu zaznaczam, że
result:=1;
nic mi nie dało i komunikat hula sobie dalej...