2009-12-29 18 views
5

हमारे पास एक मौजूदा सी ++ एप्लिकेशन है जो WinAPI का उपयोग करता है (चलिए इसे "SvcApp" कहते हैं)। हमारे पास एक और सी ++ WinAPI एप्लिकेशन है जिसे "MgrApp" कहा जाता है जो विंडोज सेवा के रूप में "SvcApp" इंस्टॉल और प्रारंभ करता है।क्यूटी का उपयोग कर विंडोज सेवा कैसे स्थापित करें?

हालांकि, हम एक क्यूटी अनुप्रयोग के साथ "SvcApp" को प्रतिस्थापित करना चाहते हैं। मुझे गलत जानकारी दी जा सकती है, लेकिन ऐसा लगता है कि एक क्यूटी अनुप्रयोग से <windows.h> का उपयोग करना संभव नहीं है, इसलिए ऐसा लगता है कि मैं सिर्फ "MgrApp" से सभी मौजूदा कोड कॉपी और पेस्ट नहीं कर सकता ... या मैं कर सकता हूं?

संक्षेप में, हम हमारे क्यूटी app से निम्नलिखित कार्य करने होंगे:

  • आरंभ/एक खिड़कियों सेवा
  • स्थापित रोक/एक खिड़कियों सेवा की स्थापना रद्द

उत्तर

2

आप निश्चित रूप से विंडोज का उपयोग कर सकते हैं क्यूटी अनुप्रयोगों में एपीआई (windows.h सहित)। दृश्यों के पीछे क्यूटी विंडोज एपीआई का उपयोग करता है। सामान्य तरीका क्रॉस-प्लेटफ़ॉर्म क्यूटी ऐप्स को संभाला जाता है #ifdef ब्लॉक का उपयोग करके। क्यूटी इस उद्देश्य के लिए Q_OS_WIN32 और Q_WS_MAC जैसे मैक्रोज़ प्रदान करता है। क्यूटी स्रोत कोड को देखें और आप इस विधि को पूरे स्थान पर उपयोग करेंगे।

संपादित करें: आप विंडोज़ सेवाओं को स्थापित/अनइंस्टॉल करने और रोकने/रोकने के लिए कमांड लाइन उपयोगिताओं का उपयोग करना भी चाह सकते हैं। इस तरह आप इसे कॉल करने के लिए केवल एक क्यूप्रोसेस का उपयोग कर सकते हैं, और WinAPI (जो हमेशा अच्छा होता है) में प्रवेश नहीं करना पड़ता है

1

मैं नहीं जानता विशेष रूप से windows.h शीर्षलेख के बारे में, लेकिन सामान्य रूप से आप अपने किसी भी क्यूटी प्रोग्राम में प्लेटफ़ॉर्म-विशिष्ट कोड शामिल कर सकते हैं। कार्यक्रम केवल प्लेटफार्मों में पोर्टेबल होने के लिए बंद हो जाता है। (आमतौर पर प्लेटफॉर्म-विशिष्ट भाग को एक अलग फ़ाइल में सेट करना बेहतर होगा, लेकिन यदि प्रोग्राम का पूरा बिंदु विंडोज सेवा होना है, तो ...)

10

इसके लिए पहले से ही एक समाधान है - QtService। यहाँ

प्रलेखन: http://qt.nokia.com/doc/solutions/4/qtservice/

यहाँ डाउनलोड करें: ftp://ftp.qt.nokia.com/qt/solutions/lgpl/qtservice-2.6-opensource.zip

+0

धन्यवाद, अच्छा के बारे में इस – JimDaniel

+0

@Mihai Limbăşan आप जानते हैं कि लाइसेंस है पता करने के लिए? – sara

+0

@ सारा अंतिम संस्करण भी [यहां गिटोरियस पर] (http://qt.gitorious.org/qt-solutions/qt-solutions/trees/master/qtservice) है। यह एलजीपीएल (स्रोत में) और [बीएसडी] (http://qt.nokia.com/products/qt-addons/solutions-archive/) है। – tricasse

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