Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Service als Konsolenanwendung vor Login (https://www.delphipraxis.net/66499-service-als-konsolenanwendung-vor-login.html)

Luckie 3. Apr 2006 07:33

Re: Service als Konsolenanwendung vor Login
 
LOL, bei mir auch nicht und habe mich somit selber ausgesperrt. :mrgreen:

In einer Konsolenanwendung het es aber. Muss ich mir mal angucken.

Angel4585 3. Apr 2006 07:45

Re: Service als Konsolenanwendung vor Login
 
Also ich bin auf Abmelden, dann hat der Debugger gefragt ob ich beenden will und dann auf abbrechen, dann war ich wieder zurück auf dem alten Desktop :stupid:

Edit: hab jetzt mal versucht aus der Konsole raus en Formular anzuzeigen und da hab ich mich auch wieder ausgesperrt.. ohne gehts aber. Was ist en ner MessageBox anders als an einem Formular?

Edit2: Also das Problem scheint die Unit "Forms" zu sein, sobald ich diese einbinde schliess ich mich aus... :(

Edit3: Also ich kann jetzt mit Canvas auf diesen zweiten Desktop zeichnen, aber könnte ich diesen zweiten Desktop nicht vielleicht auch irgendwie als eine Art Fenster auf dem ersten Desktop anzeigen lassen?

Angel4585 3. Apr 2006 08:58

Re: Service als Konsolenanwendung vor Login
 
Also theoretisch müsste doch, wenn ich auf den zweiten Desktop switche und dann mit Shellexecute ein Programm starte, dieses Programm auf ddiesem zweiten Desktop zu sehen sein, oder?

Auf jedenfall geschieht das nicht. Das programm wird auf dem ersten Desktop angezeigt... :(

Edit: Also ich hab jetzt mal den "Ernstfall" getestet:

Ein Dienst(TService) welcher den Desktop switcht und mit Canvas darauf die Uhrzeit anzeigt.

Funktioniert NICHT. Er switcht zwar den Desktop und wartet die 20 Sekunden, aber das Canvas wird nicht gezeichnet, hier der Code:

Delphi-Quellcode:
procedure TTestServerDienst.BaitAndSwitchDesktop;
var
  OldDesk     : HDESK;
  NewDesk     : HDESK;
  Canvas : TCanvas;
  DC : HDC;
begin
  OldDesk := GetThreadDesktop(GetCurrentThreadID);
  NewDesk := CreateDesktop(PChar('Foobar'), nil, nil, 0, DESKTOP_CREATEWINDOW or
    DESKTOP_SWITCHDESKTOP or DESKTOP_CREATEMENU, nil);
  if NewDesk <> 0 then
  begin
    SetThreadDesktop(NewDesk);
    Windows.SwitchDesktop(NewDesk);
    //DrawPicture('E:\Bild_2.bmp');
    ATestTime:=IncSecond(Now,20);
    try
     Canvas := TCanvas.Create();
      try
       try
          Canvas.Handle := DC;
          with canvas.Font do
           begin
           Size:=96;
           Color:=clRed;
           end;
         while (ATestTime > Now)and not Terminated do
          Canvas.TextOut(100,800,DateTimetoStr(ATestTime));
       except
        end;  
        finally
          Canvas.Free;
        end;
      finally
        ReleaseDC(0, DC);
      end;
    Windows.SwitchDesktop(OldDesk);
    SetThreadDesktop(OldDesk);
    CloseDesktop(NewDesk);
  end;
  CloseDesktop(OldDesk);
end;
{******************************************************************************}
procedure TTestServerDienst.ServiceExecute(Sender: TService);
begin
ATestTime:=IncMinute(Now,2);
while (ATestTime>Now)and not terminated do
 BaitAndSwitchDesktop;
end;
Was muss ich ändern?

Angel4585 4. Apr 2006 08:28

Re: Service als Konsolenanwendung vor Login
 
Also ich schaff es jetzt zumindest vor dem Login mit Canvas auf den neuen Desktop zu zeichnen, das problem ist jetzt nur, dass der alte Desktop nichtmehr zurück kommt.. heisst: Ich kann mich nichtmehr einloggen.. nurnoch übern abgesicherten Modus.

SirThornberry 4. Apr 2006 20:32

Re: Service als Konsolenanwendung vor Login
 
also das beschriebene problem mit den Desktops hab ich bisher nur beobachtet wenn der Desktop nicht richtig geöffnet wurde. Du kannst ja mal meinen Desktopswitch probieren ob der richtig zwischen den Desktops hinn und her springt. Wenn der richtig funktioniert liegt es eindeutig daran das der Zieldesktop nicht mit genügend Zugriffsrechten geöffnet wurde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 Uhr.
Seite 2 von 2     12   

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