2010-02-25 8 views
15

मैं बहुत एक कोको प्रोग्रामिंग करने के लिए नया हूँ और मैं जिस तरह से करने के लिए का पालन नहीं कर पा सकते हैं:आवेदन कैसे लॉन्च करें और कोको एपीआई का उपयोग करके इसे सामने लाएं?

  • नाम
  • द्वारा एक विशेष अनुप्रयोग प्रारंभ कुछ काम करें
  • बाद में उस आवेदन मैं लाना 'फ्रंट प्रक्रिया

कार्बन एपीआई में जो मिला है उससे मुझे ऐसा लगता है कि मुझे कॉल का उपयोग करना चाहिए एप्लिकेशन() और setFrontProcess()।

लेकिन कोको में यह कैसे करें? अर्थात। इसे लॉन्च करें, पीआईडी ​​प्राप्त करें, सेट करें कि पीआईडी ​​एक फ्रंट प्रोसेस हो। मैं उदाहरण के लिए गूगल और कुछ भी नहीं लगता है ...

आप में से किसी एक minimalistic नमूना है कि भयानक :)

अग्रिम धन्यवाद किया जाएगा प्रदान कर सकते हैं की कोशिश की। NSWorkspace Reference

विशेष रूप से, launchApplication: समारोह:

उत्तर

29

एक आवेदन शुरू करने के लिए:

[[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/Safari.app"]; 

एक एप्लिकेशन को सक्रिय करने के लिए:

NSRunningApplication* app = [NSRunningApplication 
          runningApplicationWithProcessIdentifier: PID]; 
[app activateWithOptions: NSApplicationActivateAllWindows]; 
// or 
NSArray* apps = [NSRunningApplication 
       runningApplicationsWithBundleIdentifier:@"com.bla.blah"]; 
[(NSRunningApplication*)[apps objectAtIndex:0] 
activateWithOptions: NSApplicationActivateAllWindows]; 
+0

मैंने पृष्ठभूमि प्रक्रिया से इस तरह से एक ऐप लॉन्च करने का प्रयास किया, लेकिन ऐसा लगता है कि लॉन्च करने की यह विधि शेर में काम नहीं करती है या बाद में अगर यह प्रक्रिया जीयूआई एप्लीकेशन नहीं है। –

+1

'NSApplicationActivateAllWindows' विकल्प सभी एप्लिकेशन विंडो को आगे आने का कारण बनता है, जो लगभग हमेशा नहीं चाहता है। इसके बजाय आप ऐप में हाल ही में सक्रिय विंडो को सक्रिय करने के लिए 'NSApplicationActivateIgnoringOtherApps' में पास कर सकते हैं। – thomasfuchs

4

एक आवेदन शुरू करने के लिए, NSWorkspace वर्ग का उपयोग करें।

मुझे अपने सिर से सक्रियण भाग का जवाब नहीं पता है। आप -[NSApplication activateIgnoringOtherApps:] के साथ अपना स्वयं का एप्लिकेशन सक्रिय कर सकते हैं, लेकिन मुझे नहीं पता कि अन्य ऐप्स के लिए इसे कैसे किया जाए।

+0

धन्यवाद। यह सही काम है, हाँ, मैंने इसे देखा, लेकिन मुझे पिड खोजने और बाद में इसका पुन: उपयोग करने का कोई तरीका नहीं मिल रहा है। चलो प्रतीक्षा करें कि कोई जवाब जानता है :) – dimsuz

1

NSRunningApplication मैक ओएस एक्स पर उपलब्ध है 10.6 या बाद।

यदि आपको पहले सिस्टम का समर्थन करना है, तो यह एपीआई जैसे GetCurrentProcess() और SetFrontProcess() और पुरानी प्रक्रिया SerialNumber संरचना के साथ किया जा सकता है।

0

Swift2 संस्करण के लिए

ऐप्स लॉन्च:

let task = NSTask() 
task.launchPath = "/usr/bin/env" 
task.arguments = ["/Applications/TextEdit.app/Contents/MacOS/TextEdit"] 
task.launch() 

बंडल पहचानकर्ता का उपयोग करके एप्लिकेशन पाने के लिए:

var apps: [AnyObject] = NSRunningApplication.runningApplicationsWithBundleIdentifier("com.apple.TextEdit") 
    var MyApp: [NSRunningApplication] = apps as! [NSRunningApplication]   
      for app in MyApp   
      { 
      } 

मैं अभी भी जिस तरह से "सक्रिय" पता करने के लिए खोजने की कोशिश कर रहा हूँ, ऐप की स्थिति "छुपाएं" आदि, लेकिन अभी तक सफल नहीं है।

0

स्विफ्ट 4 में, आप ऐप खोलने के लिए NSWorkspace.shared.launchApplication(appName:) का उपयोग कर सकते हैं। यह मेरे मामले में सामने लॉन्च ऐप भी बनाता है।

तुम भी कोशिश कर सकते हैं:

do { 
    try NSWorkspace.shared.launchApplication(at: yourAppURL, 
              options: .andHideOthers, 
              configuration: [:]) 
} catch { 
    printError("Failed to launch the app.") 
} 

विकल्प andHideOthers: को छोड़कर नव एक का शुभारंभ किया सभी क्षुधा छुपाएं।

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