Einzelnen Beitrag anzeigen

Benutzerbild von Nighthawk1310
Nighthawk1310

Registriert seit: 22. Feb 2004
Ort: Izmir / Türkei
45 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Fenster vor dem Login anzeigen

  Alt 22. Feb 2004, 06:55
hi, bin gerade dabei einen desktopmanager zu schreiben und
es kann sein dass du damit erfolg hast.
du musst den desktop "WinLogon" öffnen und deinen Thread diesem desktop
zuordnen. das funktioniert allerdings nur, wenn noch kein fenster erstellt wurde.
darum ist es am besten einen neuen thread zu erstellen und in dessen execute-event
folgende auzurufen.

die ausführlichen beschreibungen für die WindowStation- und Desktop-Funktionen
findest in microsoft MSDN Library
---------------------------------------------------

Delphi-Quellcode:
procedure TMyThread.Execute;
var
hWndDesktop: THandle;
uof :TUSEROBJECTFLAGS;
lpszDesktop: LPTSTR;
msg: TMSG;
begin
    lpszDesktop := 'WinLogon';
    //desktop öffnen
    hWndDesktop := OpenDesktop(lpszDesktop, 0, False, MAXIMUM_ALLOWED);

     uof.fInherit := False;
     uof.fReserved := False;
     uof.dwFlags := DF_ALLOWOTHERACCOUNTHOOK;
     SetUserObjectInformation(hWndDesktop, UOI_FLAGS, @uof, sizeof(uof));

     //aktuellen thread dem desktop zuordnen
     SetThreadDesktop (hWndDesktop);
     
     // hier ein fenster über api-aufrufe erstellen
     CreateWindowEx(...

     //en thread solange ausführen, bis nichts mehr passiert
     while GetMessage(msg, 0, 0, 0) do
        begin
        translatemessage(msg);
        dispatchmessage(msg);
        end;

  //dem threa den orginal desktop zuordnen...
  SetThreadDesktop (hDesktopOrg);

  //...und den desktop schliessen
  CloseDesktop (hWndDesktop);

end;
----------------------
tutorials zum erstellen von fenstern über api-aufrufe gibt es von asserbad
homepage von asserbad

----------------------

also viel erfolg
Michael
  Mit Zitat antworten Zitat