AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu Systemdienst

Ein Thema von kuba · begonnen am 25. Jul 2008 · letzter Beitrag vom 25. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#1

Frage zu Systemdienst

  Alt 25. Jul 2008, 16:53
Hallo,

ich arbeite gerade an einem Systemdienst und möchte dass dieser Systemdienst eine bestimmte Aufgabe erledigt bevor sich ein (bestimmter) User einloggt.

Jemand eine Idee wie das zu machen ist ?

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Frage zu Systemdienst

  Alt 25. Jul 2008, 17:00
Stichwort MSDN-Library durchsuchenWTSRegisterSessionNotification. Verwendest du einen handgestrickten Service oder die VCL-Variante?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Frage zu Systemdienst

  Alt 25. Jul 2008, 17:02
Zitat von Apollonius:
Stichwort MSDN-Library durchsuchenWTSRegisterSessionNotification. Verwendest du einen handgestrickten Service oder die VCL-Variante?
Wie benutzt man das ?? Ich verwende den handgestrickten Service von Assarbad.

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Frage zu Systemdienst

  Alt 25. Jul 2008, 17:08
Verwendet dieser Service RegisterServiceCtrlHandler oder RegisterServiceCtrlHandlerEx? Bei letzterem werden dir die Benachrichtigungen nämlich gesendet, ohne dass du die Funktion aufrufen musst.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Frage zu Systemdienst

  Alt 25. Jul 2008, 17:36
Zitat von Apollonius:
Verwendet dieser Service RegisterServiceCtrlHandler oder RegisterServiceCtrlHandlerEx? Bei letzterem werden dir die Benachrichtigungen nämlich gesendet, ohne dass du die Funktion aufrufen musst.
Aha, danke für den Tip, werde gleich mal nachschauen !!

Ja, man sollte wissen mit was man da überhaupt arbeitet, das ist mir in letzter Zeit häufiger aufgefallen ...

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Frage zu Systemdienst

  Alt 25. Jul 2008, 18:05
der Service beinhaltet die Funktion leider nicht, kann man evtl. über diese Routine herausfinden ob ein User angemeldet ist ?

Angemeldeten Benutzer auslesen

Die Routine verwende ich schon, wenn ich jedoch folgende Abfrage verwende komme ich nicht zum richtigen Ergebnis :

Delphi-Quellcode:
err := GetLoggedOnUserNameEx(3, Username);
  if err = 0 then ...
Kann es sein dass vor der Benutzeranmeldung schon ein Benutzer angemeldet ist ?

oder müsste es heissen:

Delphi-Quellcode:
err := GetLoggedOnUserNameEx(0, Username);
  if err <> 0 then ...
Probiere ich gleich aus ...

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Frage zu Systemdienst

  Alt 25. Jul 2008, 18:08
Was heißt "beinhaltet die Funktion nicht"? Entweder RegisterServiceCtrlHandler oder RegisterServiceCtrlHandlerEx muss er benutzen. Jeder Dienst muss das. Und die Abfrage hilft nicht viel, wenn du eine Benachrichtigung erhalten willst.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Frage zu Systemdienst

  Alt 25. Jul 2008, 18:32
Zitat von Apollonius:
Was heißt "beinhaltet die Funktion nicht"? Entweder RegisterServiceCtrlHandler oder RegisterServiceCtrlHandlerEx muss er benutzen. Jeder Dienst muss das. Und die Abfrage hilft nicht viel, wenn du eine Benachrichtigung erhalten willst.
Habe ich auch gerade festgestellt und nochmal nachgeschaut, RegisterServiceCtrlHandler ist vorhanden.

Delphi-Quellcode:
PROCEDURE serviceproc(dwargc:integer;VAR lpszargv:pchar); STDCALL;
BEGIN
  sshstatushandle:=registerservicectrlhandler(pchar(servicename), @servicehandler);
  IF (sshstatushandle<>0) THEN BEGIN
    zeromemory(@ssstatus, sizeof(ssstatus));
    ssstatus.dwservicetype:=SERVICE_WIN32_OWN_PROCESS;
    ssstatus.dwcurrentstate:=SERVICE_START_PENDING;
    ssstatus.dwcontrolsaccepted:=SERVICE_ACCEPT_STOP OR SERVICE_ACCEPT_PAUSE_CONTINUE;
    ssstatus.dwwaithint:=1000;
    setservicestatus(sshstatushandle, ssstatus);
    stopped:=false;
    paused:=false;
    ssstatus.dwcurrentstate:=SERVICE_RUNNING;
    setservicestatus(sshstatushandle, ssstatus);
    SERVICE_MAIN;
    ssstatus.dwcurrentstate:=SERVICE_STOPPED;
    setservicestatus(sshstatushandle, ssstatus);
  END;
END;
Wie benutzt man das um eine Benachrichtigung zu erhalten ?

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Frage zu Systemdienst

  Alt 25. Jul 2008, 18:34
Mit RegisterServiceCtrlHandler geht das leider nicht. Du musst entweder auf RegisterServiceCtrlHandlerEx umstellen oder Fenster benutzen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Frage zu Systemdienst

  Alt 25. Jul 2008, 18:52
Zitat von Apollonius:
Mit RegisterServiceCtrlHandler geht das leider nicht. Du musst entweder auf RegisterServiceCtrlHandlerEx umstellen oder Fenster benutzen.
Das wird mir zu kompliziert, das Programm ist eigentlich schon fertig ich möchte nur noch dass ein paar Dinge etwas anders funktionieren.

Ich habe eine Idee

Wenn der Service gestartet wird kann ich eine Variable setzten, dann weiss ich schon mal dass sich noch niemand zuvor eingeloggt hat und führe meine Funktion beim Systemstart aus. Der "bestimmte Benutzer" erhält eine Systemkonfiguration, aber nicht jedes mal beim Systemstart sondern immer nur dann wenn sich die Konfiguration geändert hat. Das kann ich nutzen um meinem Service mitzuteilen dass meine Funktion erneut ausgeführt werden muss.

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz