2015-11-25 7 views
19

मैं कस्टम कॉर्टाना कमांड बनाने पर काम कर रहा हूं। आदेश एक सार्वभौमिक विंडोज प्लेटफ़ॉर्म एप्लिकेशन का उपयोग करके पंजीकृत और निष्पादित किए जाते हैं। (GitHub)यूनिवर्सल विंडोज प्लेटफ़ॉर्म (यूडब्लूपी) ऐप का उपयोग कर प्रक्रिया कमांड (या समान) निष्पादित करने के लिए कैसे करें?

उदाहरण के लिए, मैं निम्न आदेश

<Command Name="ShutDown">  
    <ListenFor>Shut down</ListenFor> 
    <Navigate/>  
</Command> 

पंजीकृत कर लिया है एक UWP आवेदन

static async void ShutDown() 
{ 
    var dialog = new MessageDialog("This is where I would shut the computer down."); 
    await dialog.ShowAsync(); 
    //System.Diagnostics.Process.Start("Shutdown", "-s -t 10"); 
} 

में इस समारोह को चलाने के लिए लेकिन इस सेट करने के बाद मैं System.Diagnostics.Process में समर्थित नहीं है सीखा UWP।

कस्टम आदेश जो मैं चलाने के लिए चाहता हूं वह कुछ प्रकार के निष्पादन जैसे बाहरी प्रोग्राम लॉन्च करना, अन्य स्क्रिप्ट चलाने या वेबसाइट खोलना शामिल है।

यह समझ में आता है कि यूडब्लूपी उनका समर्थन नहीं करता है क्योंकि यह सार्वभौमिक है और एक्सबॉक्स या फ़ोन ऐसा करने में सक्षम नहीं हो सकता है, लेकिन मुझे उम्मीद थी कि विंडोज 10 पर इसे पूरा करने के लिए कुछ वैकल्पिक या हैकी तरीका था पीसी।

क्या मेरे पास Process कमांड या यूडब्ल्यूपी एप्लिकेशन में समान कार्यक्षमता वाले कुछ और निष्पादित करने का कोई तरीका है? ऐसा लगता है कि मैं अपने सी # कोड को निष्पादित करने के लिए कोर्तना प्राप्त कर सकता हूं, यूडब्लूपी इस स्थिति में बहुत उपयोगी नहीं होगा।

अग्रिम धन्यवाद।

+0

'WMI' का उपयोग कर यदि ऐसा है तो फिर इसे का उपयोग कर विचार के लिए WMI – MethodMan

+0

@MethodMan धन्यवाद करते हैं, यह बाहर की जाँच के लायक था' करता UWP' समर्थन करते हैं। दुर्भाग्यवश [ऐसा नहीं लगता कि 'WMI' समर्थित है] (https://social.msdn.microsoft.com/Forums/vstudio/en-US/efcf0564-5bdb-44c5-95a8-76395b662b2b/uwp-wmi- समर्थन-ऑन-UWP-अनुप्रयोगों? मंच = wpdevelop)। मेरा मतलब यह है कि, मैंने सोचा कि आदेशों को पंजीकृत करना और निष्पादित करना कठिन हिस्सा होगा, मुझे नहीं पता था कि सी # यूडब्ल्यूपी में इतनी सीमित होगी। –

+3

बमर। माइक्रोसॉफ्ट अधिक ऐप्स चाहता है लेकिन वे हमारे हाथों को कड़ा कर देते हैं। मैं एक "विश्वसनीय" ऐप प्रक्रिया को कमांड भेजना चाहता हूं - बड़ा सौदा क्या है ?? मध्य हमलों में आदमी? डेवलपर एक ऐप से सर्वर पर जेसन भेज और प्राप्त कर सकता है, ऐप ऐप क्यों नहीं? – ezaspi

उत्तर

16

समान व्यवहार प्राप्त करने के लिए सीमित - तरीके हैं।

  1. आप LaunchUri इस्तेमाल कर सकते हैं अन्य एप्लिकेशन जो एक निश्चित यूआरआई-योजना के लिए पंजीकृत गति प्रदान करने के। यह आपके वेबब्रोसर परिदृश्य के लिए काम करना चाहिए। यहां अधिक जानकारी: https://msdn.microsoft.com/en-us/library/windows/apps/windows.system.launcher.launchuriasync.aspx

  2. आप एक और ऐप ट्रिगर कर सकते हैं और LaunchForResults का उपयोग करके इसका परिणाम वापस प्राप्त कर सकते हैं। बुलाए गए ऐप को इसका समर्थन करना है। यहां अधिक जानकारी: https://msdn.microsoft.com/en-us/library/windows/apps/mt269386.aspx

  3. आप किसी अन्य ऐप द्वारा प्रदान की गई ऐप सेवाओं को ट्रिगर कर सकते हैं। बुलाए गए ऐप को इसका समर्थन करना है। ऐप सेवा पृष्ठभूमि में निष्पादित की जाएगी। (मुझे लगता है कि यह बहुत अच्छा है।) अधिक जानकारी यहां: http://blogs.msdn.com/b/mvpawardprogram/archive/2015/06/11/writing-windows-10-app-services-in-javascript.aspx

  4. यह एक छोटी हैकी है: मुझे यकीन नहीं है कि यह अभी भी काम करता है लेकिन यह विंडोज 8.1 के लिए काम करता है: आप एक तथाकथित "ब्रोकर्ड" बना सकते हैं घटक "। यह आपको मशीन पर आपके ऐप से सब कुछ ट्रिगर करने की अनुमति देता है, लेकिन आप स्टोर में ब्रोकर्ड घटक प्रकाशित नहीं कर पाएंगे। इसने विंडोज 8.1 पर Process.Start() को भी अनुमति दी। यह केवल sideloaded क्षुधा के लिए काम किया। https://msdn.microsoft.com/en-us/library/windows/apps/dn630195.aspx

सारांश:: प्रोटोकॉल प्रबंधक को अन्य एप्लिकेशन के शुरू बहुत आसान जब तक लक्ष्य है ऐप सेवा के रूप में पंजीकृत या पंजीकृत के रूप में किया जाता है मुझे यकीन है कि अगर यह अभी भी विंडोज पर 10 अधिक जानकारी यहाँ काम करता है नहीं कर रहा हूँ (उरी योजना)। स्क्रिप्ट प्रारंभ करना या अन्य * .exe असंभव है यदि विकल्प 4 अब काम नहीं करता है।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद! मैं आज रात इनमें से कुछ कोशिश करूंगा। –

+0

क्या कोई भी ऐप सर्विस को "शट डाउन" या "रीस्टार्ट" टैबलेट में उपयोग करने का प्रयास करता है? मुझे ऐसा करने का कोई तरीका नहीं दिख रहा है। – Sam

3

विंडोज 10 वर्षगांठ अपडेट (1607) के साथ पीसी पर इस परिदृश्य को सक्षम करने का एक विकल्प है।

https://docs.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.FullTrustProcessLauncher

इस तरह से आप यह प्रकाश कर सकते हैं प्लेटफार्मों पर जहां यह समर्थित है, चल रहा है यानी पीसी 1607: डेस्कटॉप एक्सटेंशन SDK में इस एपीआई के साथ आप एक FullTrust प्रक्रिया है कि पूर्ण उपयोगकर्ता विशेषाधिकारों से चलता है शुरू कर सकते हैं या ऊपर। और अभी भी आपके एप्लिकेशन सार्वभौमिक हो जाएगा:

if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0)) 
{ 
    await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync(); 
} 
+0

लेकिन, अगर मैं इसका उपयोग करता हूं, फिर भी मैं अपने ऐप को स्टोर में प्रकाशित कर सकता हूं? – Sieg

+0

हां, सामान्य रूप से आप कर सकते हैं। आपको डेस्कटॉप ऐप प्रकाशन प्रक्रिया से गुजरना होगा, जिसमें आपके ऐप की ऑनबोर्डिंग समीक्षा शामिल होगी, क्योंकि इसमें पूर्णतम क्षमता है। आप यह प्रक्रिया यहां शुरू कर सकते हैं: https://developer.microsoft.com/en-us/windows/projects/campaigns/desktop-bridge –

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