Wie kann ich eine Benachrichtigung anzeigen Bereich-Ballon und Symbol aus einem Windows-Dienst?
Ich habe einen Windows-Dienst, der immer ausgeführt wird, wenn der Benutzer beginnt, Ihren Arbeitsplatz. Dieser Windows-Dienst ist ein sensibler Bereich und ich möchte einen Ballon Benachrichtigung im Infobereich wenn bestimmte Dinge geschehen, wie der Dienst Beendet, Gestartet, neu gestartet etc.
Zum Beispiel:
Außerdem ist es eine Möglichkeit zu zeigen, dass ein Symbol im Infobereich für meine Windows-Dienst?
Dieser Beitrag könnte helfen: stackoverflow.com/questions/2652254/... Ein Dienst kann nicht direkt über ein SysTray-icon.
InformationsquelleAutor Ryan R | 2011-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Tagen von Windows-Diensten die direkte Interaktion mit dem desktop sind, so müssen Sie einen anderen Weg finden.
Was ich getan habe ist, erstellen Sie eine normale WinForms-Anwendung mit einem NotifyIcon. Das Verhalten dieser Anwendung entspricht der von der Task-Manager, so dass es versteckt werden kann aus der Taskleiste, und nur sichtbar in der Taskleiste. Wenn ich mit der rechten Maustaste auf das system tray-icon, bekomme ich ein Menü. Wenn ich auf das Symbol doppelklicken, wird das Fenster der Anwendung angezeigt wird.
Zur Erleichterung der Kommunikation zwischen den WinForms-Anwendung und Windows-Dienst, verwende ich WCF. Speziell, ich benutze Juval LÖWY's Publish-Subscribe-Framework, das funktioniert wirklich gut für diese Art von Szenario. Siehe meine Antwort hier für mehr details.
Hoffe, das hilft.
InformationsquelleAutor Matt Davis
Unserer neuen (und kostenlosen) ServiceTray utility lassen, Steuern Sie Ihre service aus einer tray-icon. Es wird auch zeigen, pop-up/Ballon-Benachrichtigungen, wenn es erkennt, dass Ihr Dienst hat den Status gewechselt (gestartet-> gestoppt, etc).
InformationsquelleAutor CoreTech
Wenn Sie wollen einfach nur senden Sie einen einfachen Befehl auf Ihrem Windows-Dienst, den Sie senden können Sie eine Nachricht von Ihrem Benutzer-app in der folgenden Weise.
Wenn Sie das überschreiben der OnCustomCommand Methode Sie in der Klasse die erweitert ServiceBase.
Könnte man dann verwenden Sie diesen Befehl auslösen, den Dienst zu tun, so etwas wie laden Sie eine config-Datei, oder wechseln Sie zu einem Staat.
Was mich und Matt zu sagen ist, dass, anstatt konfigurieren Sie service zu erkennen, dass eine Benutzer-log-in, und fügen Sie ein Symbol, um Ihre Taskleiste. Eine Anwendung, die läuft separat, setzt ein Symbol in der Taskleiste. Diese Anwendung kann den Zugriff des Staates und senden einfacher Befehle, um den Dienst in der Methode oben zeigen. So kann das Symbol nicht verschwindet, wenn der Dienst beendet wird. Wenn Sie möchten, es zu sein, wenn der Benutzer sich anmeldet, dann fügen Sie eine Verknüpfung zu der app in die start-up-Ordner.
InformationsquelleAutor JonPen