2011-06-01 23 views
6

Kullanıcı, iş istasyonlarını başlattığında her zaman çalışan bir Windows Hizmetim var. Ayrıca Bir Windows Hizmetinden Bildirim Alanı Balonunu ve Simgesini nasıl gösterebilirim?


enter image description here

: başlatır, Restarts vb Örneğin

Bu Windows Hizmet önemlidir ve bazı şeyler Servis Durakları gibi gerçekleştiğinde ben Bildirim Alanında bir Balon Bildirimi göstermek istiyorum Windows Hizmetim için Bildirim Alanı Simgesini göstermenin bir yolu var mı?

+2

Bu yayın size yardımcı olabilir: http://stackoverflow.com/questions/2652254/how-can-i-display-a-system-tray-icon-for-c-window-service Bir hizmet doğrudan sahip olamaz bir SysTray simgesi. – keyboardP

cevap

11

Doğrudan masaüstüyle etkileşimde bulunan Windows hizmetlerinin günleri bitti, bu nedenle başka bir yol bulmanız gerekiyor.

Yaptığım şey, NotifyIcon içeren normal bir WinForms uygulaması oluşturmaktır. Bu uygulamanın davranışı, Görev Yöneticisi'nin görev çubuğundan gizlenebilmesini ve yalnızca sistem tepsisinde görülebilmesini sağlar. Sistem tepsisi simgesini sağ tıklarsam, bir menü alırım. Simgeyi çift tıklatırsam, uygulama penceresi görüntülenir.

WinForms uygulamasıyla Windows hizmeti arasındaki iletişimi kolaylaştırmak için WCF kullanıyorum. Özellikle, bu tür bir senaryo için gerçekten iyi çalışan Juval Lowy'un Publish-Subscribe Framework kullanıyorum. Daha fazla bilgi için benim yanıtım here'a bakın.

Bu yardımcı olur umarım.

-1

Sadece Windows hizmetinize basit bir komut göndermek istiyorsanız, kullanıcı uygulamanızdan aşağıdaki şekilde bir mesaj gönderebilirsiniz.

ServiceController myService = new ServiceController("YOUR Service Name"); 
myService.ExecuteCommand(123); // do something; 

Sizin sınıfınızdaki OnCustomCommand yöntemini geçersiz kılarsanız, ServiceBase'i genişletir. Bu komutu, hizmeti bir yapılandırma dosyasını yeniden yüklemek veya bazı duruma geçmek gibi bir şey yapmak için tetiklemek için kullanabilirsiniz.

+2

Cevabınız gerçekten soruyla ilgilenmiyor. Ryan bir Sistem Tepsisi Simgesiyle çalışmaya çalışıyor, servise komut göndermiyor. – Peter

+0

Kendim ve Matt'in söylediği şey, bir kullanıcı girişini tespit etmek ve görev çubuğuna bir simge eklemek için servisinizi yapılandırmaktan ziyade. Görev çubuğunda bir simge koyan ayrı çalışan bir uygulama var. Bu uygulama, durum bilgilerine erişebilir ve yukarıdaki yöntemde sunulan hizmete basit komutlar gönderebilir. Bu şekilde hizmet sonlanırsa simgenin kaybolmaz. Kullanıcı giriş yaptığında orada olmanızı istiyor ve ardından uygulamanıza başlangıç ​​klasörüne bir kısayol ekleyin. – JonPen

0

Yeni (ve ücretsiz) ServiceTray utility, hizmetinizi bir tepsi simgesinden kontrol etmenizi sağlayacaktır. Ayrıca, servisinizin durumunun değiştiğini algıladığında (başlatılmış -> durdurulmuş, vb.) Açılır pencere/balon bildirimleri de gösterecektir.

İlgili konular