Hi,
ich bin mir nicht mehr so ganz sicher, wo ich die sources gefunden habe, aber dabei kam mir folgende Idee...
Wenn man z.B. Kaspersky Antivirus installiert, dann zeichnen die im Windows XP Welcome Screen, den Text: "Kaspersky Antivirus" das würde ich auch gerne erreichen, nur halt mit meinen Text...
Jetzt hab ich mal ein wenig gelesen und bin dabei über die Möglichkeit: Winlogon Notification Packages gestossen, demnach sollte das ja möglich sein, wenn man seine
DLL im System registriert (entsprechender Registry Pfad)...
Problem: Irgendwie zeichend er mir den Text jetzt leider nur hinter den Welcome Screen (denke mal ist der User Desktop), wie bekomme ich das denn hin, dass er mir den meinen Text auf den Welcome Screen z.B. ganz oben links zeichnet?????? vermutlich ist dass Problem das ich nicht weiss, wie ich den Welcome Desktop Screen ermitteln soll und somit auf den Canvas meinen Text zeichnen kann...
Mal der Source (wie gesagt kann mich nicht mehr erinnern wo der her ist...)
Delphi-Quellcode:
library sLogon;
uses
Windows,
Graphics,
Sysutils,
types;
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;
procedure DrawPicture(
const FileName:
String; Width: Integer = 0;
Height: Integer = 0; Top: Integer = 0; Left: Integer = 0);
var
DC : HDC;
Canvas : TCanvas;
Bitmap : TBitmap;
begin
// Falls die Datei existiert, dann fortfahren
if FileExists(FileName)
then
begin
Bitmap := TBitmap.Create();
try
Bitmap.LoadFromFile(FileName);
// Falls eigene Parameter angeben sind, werden diese benutzt.
if Height > 0
then
Bitmap.Height := Height;
if Width > 0
then
Bitmap.Width := Width;
// Wir holen uns den 'Device Context' vom Desktop
DC := GetWindowDC(GetDesktopWindow());
try
Canvas := TCanvas.Create();
try
// Wir weisen den DC dem Canvas zu
Canvas.Handle :=
DC;
// Das Bild wird an Left / Top auf den Desktop gezeichnet
Canvas.Draw(Left, Top, Bitmap);
finally
Canvas.Free;
end;
finally
ReleaseDC(0,
DC);
end;
finally
Bitmap.Free;
end;
end;
end;
procedure WLEventLogon(pInfo: PWLX_NOTIFICATION_INFO);
stdcall;
begin
DrawPicture('
MG.bmp', 0, 0, 0, 0);
end;
procedure WLEventLogoff(pInfo: PWLX_NOTIFICATION_INFO);
stdcall;
begin
DrawPicture('
MG.bmp', 0, 0, 0, 0);
end;
exports
WLEventLogon,
WLEventLogoff;
begin
end.
Vielen Dank
Marc