2009-09-22 36 views
5

Nếu tôi OPTION + RIGHT CLICK trên biểu tượng Trình tìm kiếm, tôi nhận được tùy chọn "Khởi chạy lại" trong menu ngữ cảnh. Tôi muốn khởi chạy lại trình tìm kiếm theo chương trình, nếu có thể. Tôi chắc chắn có một cách tốt hơn để làm điều đó hơn là chỉ cần giết nó và để cho nó khởi động lại. Giả sử tôi có quyền/quyền thích hợp để làm như vậy rồi.Làm cách nào để khởi chạy lại Trình tìm kiếm theo chương trình?

Ngoài ra, tôi cũng muốn khởi động lại Spotlight.

Trả lời

5

Gửi cho một sự kiện từ bỏ sử dụng AppleScript, sau đó gửi nó trở thành một sự kiện kích hoạt:

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

EDIT: thêm một sự chậm trễ để đảm bảo Finder là sẵn sàng tiếp nhận một sự kiện kích hoạt. Trên máy tính của tôi, đôi khi nó cần sự chậm trễ này, đôi khi nó không:

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

(... cuối EDIT)

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

bạn không làm điều tương tự hai lần ??? –

+0

Bạn đã bị rò rỉ bộ nhớ. Ngoài ra, không cần kích hoạt Trình tìm kiếm. Nó sẽ tự khởi động lại. –

+0

matt ... tập lệnh đầu tiên là 'thoát', tập lệnh thứ hai là 'kích hoạt'. Mã mẫu bị rò rỉ chắc chắn. Trình tìm kiếm không kích hoạt lại mà không được thông báo trong ít nhất là Snow Leopard. Không tích cực về hệ điều hành trước, nhưng tôi khá chắc chắn một Finder "thực sự" bỏ thuốc lá vẫn bỏ thuốc lá. – Rob

-1

'Khởi chạy lại' gần như chắc chắn chỉ gửi tín hiệu giết tới Trình tìm kiếm.

3

Trình tìm kiếm được hệ thống giữ nguyên, vì vậy bạn có thể chỉ cần giết nó và nó sẽ tự động khởi chạy lại. Tôi sử dụng killall Finder để thực hiện việc này.

+1

Vâng, Explorer trên Windows tương tự, nhưng giết ngẫu nhiên Explorer có thể dẫn đến những điều xấu; tốt hơn hết là tắt nó đi. –

-1

Killing Finder với killall Finder công trình kể từ khi hệ thống sẽ tự động chạy lại.

[[NSTask launchedTaskWithLaunchPath:@"/usr/bin/killall" 
    arguments:[NSArray arrayWithObjects:@"Finder", nil]] waitUntilExit]; 
Các vấn đề liên quan