2009-09-22 15 views
5

यदि मैं खोजक आइकन पर OPTION + RIGHT CLICK पर हूं, तो मुझे संदर्भ मेनू में "पुन: लॉन्च" विकल्प मिलता है। यदि संभव हो तो मैं खोजक रूप से खोजक को फिर से लॉन्च करना चाहता हूं। मुझे यकीन है कि इसे मारने के बजाय इसे करने का बेहतर तरीका है और इसे पुनरारंभ करने दें। मान लें कि मेरे पास पहले से ऐसा करने के लिए उचित प्राधिकरण/अनुमतियां हैं।प्रोग्रामर प्रोग्रामेटिक रूप से कैसे लॉन्च करता है?

इसके अतिरिक्त, मैं स्पॉटलाइट को भी पुनरारंभ करना चाहता हूं।

उत्तर

5

यह AppleScript का उपयोग कर एक छोड़ने घटना भेजें, तो यह एक सक्रिय घटना भेजें:

//tell Finder to quit 
NSAppleScript *restartFinder = [[NSAppleScript alloc] initWithSource:@"tell application \"Finder\" to quit"]; 
[restartFinder executeAndReturnError:nil]; 

संपादित करें: सुनिश्चित करें कि खोजक बनाने के लिए एक देरी जोड़ने के एक सक्रिय घटना प्राप्त करने के लिए तैयार है।

//delay 1 second 
restartFinder = [[NSAppleScript alloc] initWithSource:@"delay 1"]; 
[restartFinder executeAndReturnError:nil]; 

(... अंत संपादित करें)

//tell Finder to activate 
restartFinder = [[NSAppleScript alloc] initWithSource:@"tell application \"Finder\" to activate"]; 
[restartFinder executeAndReturnError:nil]; 
+0

क्या आप दो बार एक ही काम नहीं कर रहे हैं ??? –

+0

आपको मेमोरी लीक मिल गई है। इसके अलावा, खोजक को सक्रिय करने की कोई आवश्यकता नहीं है। यह स्वचालित रूप से पुनरारंभ होगा। –

+0

मैट ... पहली लिपि 'छोड़ो' है, दूसरा 'सक्रिय' है। नमूना कोड निश्चित रूप से लकी है। फाइंडर कम से कम हिम तेंदुए में बताए बिना पुनः सक्रिय नहीं होता है। पूर्व ओएस के बारे में सकारात्मक नहीं है, लेकिन मुझे पूरा यकीन है कि एक "वास्तव में" छोड़ने वाला खोजक छोड़ देता है। – Rob

-1

'रिलांच' लगभग निश्चित रूप से केवल खोजक को एक हत्या संकेत भेजता है।

3

खोजक सिस्टम द्वारा जीवित रखा जाता है, इसलिए आप इसे मार सकते हैं और यह स्वचालित रूप से फिर से लॉन्च हो जाएगा। मैं इसे पूरा करने के लिए killall Finder का उपयोग करता हूं।

+1

हाँ, विंडोज़ पर एक्सप्लोरर समान है, लेकिन यादृच्छिक रूप से एक्सप्लोरर को मारने से बुरी चीजें हो सकती हैं; इसे साफ करने के लिए बहुत बेहतर है। –

-1

killall Finder काम करता है के साथ खोजक हत्या के बाद से सिस्टम स्वचालित रूप से इसे पुन: लॉन्च होगा: मेरी मशीन पर, कभी कभी यह इस देरी की जरूरत है, कभी कभी यह नहीं करता है।

[[NSTask launchedTaskWithLaunchPath:@"/usr/bin/killall" 
    arguments:[NSArray arrayWithObjects:@"Finder", nil]] waitUntilExit]; 
संबंधित मुद्दे