Dienst Steuern!

10110010

Mitglied
Einen wunderschönen guten Tag meine lieben Freunde.

Ich habe da ein Problem.
Ich wollte einen Dienst schreiben der Dialoge darstellen kann.
Allerdings hab ich erfahren das daß nicht geht.
Nun hatte ich mir gedacht das ich den Dienst alleine halte und ein Programm schreibe das dan die DialogFormen enthällt.
Sobalt eine Aktion in eines dieser Dialoge stattfindet soll im Dienst eine Variable von True auf False gesetzt werden!
Wie stelle ich das an?
Kann ich Variablen eines Dienstes von einem anderen Programm verändern oder muss ich das über umwege wie z.B. die Registrierung machen?

Hintergrund ist das ich einen Dienst laufen habe der kontinuierlich prüft ob der Druckerspooler aktiv ist.
Ist das der fall so soll er mit dem befehl "net stop spooler" gestopt werden.
In der Taskleiste befindet sich ein NotifyIcon das anzeigt ob man drucken kann der nicht.
Wenn man da mit der rechten Maustaste klickt erscheint ein Contextmenü womit man den Drucker wieder freigeben kann.
Es wird nach einem Passwort gefragt.
Ist dieses richtig soll der Dienst den befehl "net start spooler" ausführen.
Im Dienst läuft ein Thread der jede Sekunde prüft ob die variable KillMe=true ist.
genau das ist die die ich ändern will.

Was währe ein eleganter und einfacher Weg?

mfg ZeroOne
 
Zuletzt bearbeitet:

Kyoko

Erfahrenes Mitglied
Also, spontan fallen mir da jetzt 2 Möglichkeiten ein, wie das elegant gelöst werden könnte:

1.) Du verwendest eine Datenbank, in die dein Program schreibt und von der der Dienst liest, um ihm mitzuteilen, was du willst

oder

2.) Du verwendest Remoting um auf die Objekte des Dienstes zuzugreiffen.

lg
 

Norbert Eder

Erfahrenes Mitglied
Grundsätzlich gäbe es ja die Möglichkeit, dass der Dienst selbst eine Oberfläche hat, die aufgerufen werden kann (beispielsweise über NotifyIcon). Damit gibt's aber unter Vista Probleme und halte ich in deinem Fall auch nicht so sinnvoll.

Was wäre mit einer kleinen Anwendung (in Autostart einbinden), welche permanent läuft, via NotifyIcon bedient werden kann, welches einfach den Druckerspooler abfragt und die entsprechenden Aktionen setzt? Wäre wesentlich weniger Aufwand. Die Notwendigkeit eines Dienstes sehe ich nicht unbedingt gegeben. Für diese kleine Aufgabe wäre es fast zuviel Overhead.
 

10110010

Mitglied
Hallo und erstmal vielen dank für die Antworten.

Ich hatte das mal mit nem NotifyIcon probiert aber es lässt sich keine Form starten.
egal was ich mache, selbst wenn ich eine Form als ShowDialog anzeigen lassen will.
Aber ich lass das dann.

Den Autostart würde ich ungerne verwenden da der zu schnell beeinflußt werden kann!
Meineswissens wird ein Dienst nicht im Taskmanager angezeigt was ebenfals eine positive eigenschaft ist.

Das mit der Datenbank ist ne gute möglichkeit.
Wie funktioniert den die Remoting Methode?

mfg ZeroOne
 

10110010

Mitglied
Danke.

Das mit dem Remoting ist genau das was ich gesucht hab.
Das funktioniert klasse.
Vielen vielen Dank.

Ihr seid die besten!

mfg ZeroOne