Kod: Tümünü seç
function JournalProc(Code, wParam: Integer; var EventStrut: TEventMsg): Integer; stdcall;
begin
Result := CallNextHookEx(JHook, Code, wParam, Longint(@EventStrut));
if Code < 0 then Exit;
if Code = HC_SYSMODALON then Exit;
if Code = HC_ACTION then
begin
if EventStrut.message = WM_LBUTTONDOWN then
begin
// İşlemlerim
end;
end;
end;
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
OzelServis.Controller(CtrlCode);
end;
function TOzelServis.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TOzelServis.ServiceExecute(Sender: TService);
begin
while not Terminated do ServiceThread.ProcessRequests(True);
end;
procedure TOzelServis.ServiceAfterInstall(
Sender: TService);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create(KEY_READ or KEY_WRITE);
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\SYSTEM\CurrentControlSet\Services\' + Name, false) then
begin
Reg.WriteString('Description', 'Açıklama');
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
procedure TOzelServis.ApplicationEvents1Message(
var Msg: tagMSG; var Handled: Boolean);
begin
Handled := True;
if Msg.message = WM_CANCELJOURNAL then JHook := SetWindowsHookEx(WH_JOURNALRECORD, @JournalProc, 0, 0);
end;
procedure TOzelServis.ServiceStart(Sender: TService;
var Started: Boolean);
begin
JHook := SetWindowsHookEx(WH_JOURNALRECORD, @JournalProc, hInstance, 0);
end;
procedure TOzelServis.ServiceStop(Sender: TService;
var Stopped: Boolean);
begin
UnhookWindowsHookEx(JHook);
end;
(Not : Burada JournalProc fonksiyonuna sadece 1 kez giriyor ve ApplicationEvents1Message bölümüne ise hiç girmiyor.)