So, ich habe jetzt die folgende
DLL, die einfach nur jede 10 Sekunden eine Message anzeigen soll:
Delphi-Quellcode:
library WinLogon;
uses
Windows,
MMSystem,
dialogs;
type
PWSTR = PWideChar;
HANDLE = Longword;
PFNMSGECALLBACK =
function(bVerbose: BOOL; lpMessage: LPWSTR): DWORD;
stdcall;
_WLX_NOTIFICATION_INFO =
record
Size: ULONG;
Flags: ULONG;
UserName: PWSTR;
Domain: PWSTR;
WindowStation: PWSTR;
hToken:
HANDLE;
hDesktop: HDESK;
pStatusCallback: PFNMSGECALLBACK;
end;
WLX_NOTIFICATION_INFO = _WLX_NOTIFICATION_INFO;
PWLX_NOTIFICATION_INFO = ^WLX_NOTIFICATION_INFO;
var
TimerID: Longword;
DelayTime: integer = 10000;
Files: Textfile;
procedure TimerCallback(uTimer, uMessage, dwUser, dw1, dw2: Cardinal);
stdcall;
begin
showmessage('
test');
end;
procedure WLEventLogon(pInfo: PWLX_NOTIFICATION_INFO);
stdcall;
begin
TimerID := timeSetEvent(DelayTime, 0, TimerCallback, 0, 0);
end;
procedure WLEventLogoff(pInfo: PWLX_NOTIFICATION_INFO);
stdcall;
begin
timeKillEvent(TimerID);
end;
exports
WLEventLogon,
WLEventLogoff;
begin
end.
Nur leider werden keine Nachrichten angezeigt. Nach einem Neustart ist die
DLL ordnungsgemäß im Winlogon Prozess geladen, aber meine Events werden nicht abgearbeitet.
In der Registry habe ich
Code:
"Logon"="WLEventLogon"
"Logoff"="WLEventLogoff"
zu dem Dllnamen und Impersonate und Asynchronous eingetragen.
Florian