2011-06-01 10 views
6

मेरे पास एक विंडोज सेवा है जो उपयोगकर्ता हमेशा वर्कस्टेशन शुरू करते समय चल रही है। इसके अलावा
enter image description hereमैं विंडोज सेवा से अधिसूचना क्षेत्र गुब्बारा और आइकन कैसे दिखा सकता हूं?

,: यह Windows सेवा के लिए महत्वपूर्ण है और जब कुछ चीजें सेवा बंद हो जाता है के रूप में इस तरह के हो मैं सूचना क्षेत्र में एक गुब्बारा अधिसूचना प्रदर्शित करना चाहते हैं, शुरू होता है, पुनरारंभ आदि

उदाहरण के लिए क्या मेरी विंडोज सेवा के लिए अधिसूचना क्षेत्र आइकन दिखाने का कोई तरीका है?

+2

यह पोस्ट सहायता कर सकता है: http://stackoverflow.com/questions/2652254/how-can-i-display-a-system-tray-icon-for-c-window- सेवा एक सेवा सीधे नहीं हो सकती एक SysTray आइकन। – keyboardP

उत्तर

11

डेस्कटॉप सेवाओं के साथ सीधे इंटरैक्ट करने वाले विंडोज सेवाओं के दिन खत्म हो गए हैं, इसलिए आपको एक और तरीका ढूंढना होगा।

मैंने जो किया है वह सामान्य WinForms एप्लिकेशन बनाता है जिसमें एक नोटिफ़िकॉन शामिल है। इस एप्लिकेशन का व्यवहार टास्क मैनेजर की नकल करता है, जैसे कि इसे टास्क बार से छुपाया जा सकता है और केवल सिस्टम ट्रे में दिखाई दे सकता है। अगर मैं सिस्टम ट्रे आइकन पर राइट-क्लिक करता हूं, तो मुझे एक मेनू मिलता है। यदि मैं आइकन को डबल-क्लिक करता हूं, तो एप्लिकेशन विंडो दिखायी जाती है।

WinForms एप्लिकेशन और विंडोज सेवा के बीच संचार की सुविधा के लिए, मैं डब्ल्यूसीएफ का उपयोग करता हूं। विशेष रूप से, मैं Juval Lowy के Publish-Subscribe Framework का उपयोग करता हूं, जो इस तरह के परिदृश्य के लिए वास्तव में अच्छा काम करता है। अधिक जानकारी के लिए मेरा उत्तर here देखें।

उम्मीद है कि इससे मदद मिलती है।

-1

यदि आप बस अपनी विंडोज सेवा में एक साधारण कमांड भेजना चाहते हैं तो आप इसे अपने यूजर ऐप से निम्नलिखित तरीके से एक संदेश भेज सकते हैं।

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

यदि आप कक्षा में OnCustomCommand विधि को ओवरराइड करते हैं तो सर्विसबेस को विस्तारित करता है। फिर आप कॉन्फ़िगरेशन फ़ाइल को पुनः लोड करने जैसे कुछ करने के लिए सेवा को ट्रिगर करने के लिए इस आदेश का उपयोग कर सकते हैं, या कुछ राज्य पर स्विच कर सकते हैं।

+2

आपका उत्तर वास्तव में प्रश्न के साथ जाल नहीं है। रयान एक सिस्टम ट्रे आइकन के साथ काम करने की कोशिश कर रहा है, सेवा को आदेश नहीं भेजता है। – Peter

+0

मैं और मैट क्या कह रहा हूं कि उपयोगकर्ता लॉग इन करने और अपने टास्क बार में आइकन जोड़ने के लिए आपको सेवा कॉन्फ़िगर करने के बजाय। एक ऐसा एप्लिकेशन है जो अलग-अलग चलता है जो टास्कबार में एक आइकन डालता है। यह एप्लिकेशन राज्य तक पहुंच सकता है और ऊपर दिए गए विधि शो में सेवा के लिए सरल आदेश भेज सकता है। अगर सेवा समाप्त हो जाती है तो इस तरह आइकन गायब नहीं होता है। यदि आप उपयोगकर्ता लॉग इन करते समय वहां रहना चाहते हैं तो स्टार्ट-अप फ़ोल्डर में अपने ऐप में एक शॉर्टकट जोड़ें। – JonPen

0

हमारा नया (और मुफ्त) ServiceTray utility आपको ट्रे आइकन से आपकी सेवा को नियंत्रित करने देगा। यह पॉप-अप/गुब्बारा अधिसूचनाएं भी दिखाएगा जब यह पता चलता है कि आपकी सेवा ने राज्य बदल दिया है (प्रारंभ-> रोक दिया गया है, आदि)।

संबंधित मुद्दे