AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Winlogon, Welcome Screen

Ein Thema von stOrM · begonnen am 28. Apr 2008 · letzter Beitrag vom 14. Mai 2008
 
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#1

Winlogon, Welcome Screen

  Alt 28. Apr 2008, 11:35
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
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz