objective c - सहायक उपकरण प्रोग्राम के लिए प्रवेश सक्षम करें




objective-c cocoa (3)

आप एक एपल्सस्क्रिप्ट चला सकते हैं (या एपल्सस्क्रिप्ट को स्क्रिप्टिंग ब्रिज में या जो कुछ भी आपके ऐड्वैक्ट ऐलेवेंट पर होता है)

यहां ऐप्लेस्क्रिप्ट है जो मैं एक विशेष प्रोजेक्ट में उपयोग करता हूं जो आपके लिए क्या आवश्यक है:

on isUIScriptingOn()
    tell application "System Events" to set isUIScriptingEnabled to UI elements enabled
    return isUIScriptingEnabled
end isUIScriptingOn

on turnUIScriptingOn(switch)
    tell application "System Events"
        activate
        set UI elements enabled to switch
    end tell
end turnUIScriptingOn

on run
    if not isUIScriptingOn() then
        display dialog "Enable Access for assistive devices (found in the Universal Access System Preference) must be on for this software to correctly work. This program will enable this setting for you"
        turnUIScriptingOn(true)
        display dialog "Access for assistive devices in now on"
    end if
end run

मैं सिस्टम वरीयताओं में सहायक उपकरणों के लिए प्रोग्राम को सक्षम करना चाहता हूं। लेकिन समस्या यह है कि मेरा आवेदन रूट उपयोगकर्ता के रूप में नहीं चल रहा है और मैं नहीं चाहता कि मेरा आवेदन रूट उपयोगकर्ता के रूप में हो और इसके बीच में किसी भी प्रमाणीकरण के लिए नहीं पूछना चाहिए।

मैं दुनिया भर में सभी कुंजीपटल घटनाओं को टैप करना चाहता हूं। मैं उसी के लिए CGEventTapCreate () का उपयोग कर रहा हूं। CGEventTapCreate () एपीआई के दस्तावेज़ीकरण में यह उल्लेख किया गया है कि, इवेंट नल नीचे कुंजी और नीचे की घटनाओं को प्राप्त करता है यदि निम्न स्थितियों में से कोई एक सत्य है:

  1. वर्तमान प्रक्रिया रूट उपयोगकर्ता के रूप में चल रही है
  2. सहायक उपकरणों के लिए प्रवेश सक्षम है मैक ओएस एक्स v10.4 और बाद में, आप सिस्टम वरीयताएँ, यूनिवर्सल एक्सेस पैनल, कीबोर्ड व्यू का उपयोग कर इस सुविधा को सक्षम कर सकते हैं।

सिस्टम प्राधान्य से सहायकारी उपकरणों के लिए ऐक्सेस एक्सेस की जाँच करके मैन्युअल रूप से मैंने कोशिश की और यह मुझे अपेक्षित आउटपुट देता है

तो क्या प्रमाणीकरण की मांग किए बिना कार्यक्रम के द्वारा ऐसा करने का कोई तरीका है और आवेदन रूट उपयोगकर्ता के रूप में नहीं चल रहा है?

धन्यवाद,

धीरज।


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


ठीक है, सभी समाधान / कुछ पृष्ठभूमि जानकारी इस पते पर मिल सकती है ..

इसलिए, ऐप्पल शेर में एक और समाधान के साथ आया जो इन समस्याओं का समाधान करता है: जादू फ़ंक्शन एक्समेक प्रोसेसस ट्रस्टेड । यह आपके एप्लिकेशन के लिए एपीआई को सक्षम करेगा और इसे रूट के रूप में चल रहे किसी प्रक्रिया से बुलाया जाना है, इसलिए यह सुरक्षित है । यह भी सभी स्वचालित है, इसलिए यूजर को अपने पासवर्ड के लिए पूछने से एक तरफ, उपयोगकर्ता को कुछ भी करने की ज़रूरत नहीं है। समस्या यह है कि ऐसा लगता है कि कोई इसे इस्तेमाल नहीं करता है हर तीसरे पक्ष के आवेदन मैंने देखा है और यहां तक ​​कि स्वचालक सिर्फ उपयोगकर्ता को सिस्टम वरीयता में बॉक्स को मैन्युअल रूप से चेक करने के लिए कहता है। यह कार्यान्वयन के लिए और अधिक काम किया गया है और इसमें एक बड़ा अनाधिकृत बग है (आवेदन को वास्तव में विश्वसनीय होने से पहले पुनः प्रारंभ किया जाना चाहिए अपडेट: # 5711990 के रूप में रिपोर्ट किया गया है), लेकिन मुझे वाकई लगता है कि लोगों को इसका उपयोग करना चाहिए। इसलिए, मैंने सोचा था कि मैं आपके ऐप में इसे लागू करना आसान बनाने के लिए कोड को रिलीज़ कर दूँगा। इसमें एक सहायक एजेंट शामिल है, जिसे आप अपनी परियोजना में छोड़ने में सक्षम होना चाहिए।







accessibility-api