Tôi cần phải thoát khỏi các ứng dụng khác trong ca cao. Tôi có một từ điển userInfo từ một thông báo cho tôi biết tên của ứng dụng. Tôi đã thử các phương pháp chấm dứt và forceTerminate, nhưng họ đã không làm việc (Tôi nghĩ rằng họ chỉ có sẵn trong báo tuyết.)Bỏ các ứng dụng khác trong ca cao
Trả lời
Bạn có thể gửi ứng dụng AppleEvent thoát, yêu cầu ứng dụng thoát, nhưng tôi không nghĩ rằng bạn có thể buộc ứng dụng phải thoát mà không có đặc quyền nâng cao. Hãy nhìn vào khuôn khổ Scripting Bridge cho cách Cocoa-y nhất để gửi các sự kiện cần thiết.
Chúng tôi sử dụng -[NSWorkspace runningApplications]
. Nó đòi hỏi 10.6 hoặc cao hơn.
void SendQuitToProcess(NSString* named)
{
for (id app in [[NSWorkspace sharedWorkspace] runningApplications])
{
if ([named isEqualToString:[[app executableURL] lastPathComponent]])
{
[app terminate];
}
}
}
nếu không, bạn sẽ phải sử dụng AppleScript. Bạn có thể làm điều gì đó ủy mị như thế này:
void AESendQuitToProcess(const char* named)
{
char temp[1024];
sprintf(temp, "osascript -e \"tell application \\\"%s\\\"\" -e \"activate\" -e \"quit\" -e \"end tell\"", named);
system(temp);
}
Có vẻ ổn, tôi sẽ thử nghiệm sau ngày hôm nay. – pasawaya
Các giải pháp tốt nhất (chiếm tất cả các API khác nhau có sẵn trong 3-4 phiên bản mới nhất của OS X) sẽ được sử dụng AppleScript. Chỉ cần tạo ra các kịch bản cần thiết trong Obj-C/Python/Java bất cứ điều gì nó là bạn đang thực sự sử dụng (Tôi giả sử Obj-C kể từ khi bạn nói cụ thể 'Trong ca cao'). Và thực hiện nó bằng cách sử dụng lớp NSAppleScript (một ví dụ contrived):
// Grab the appName
NSString *appName = [someDict valueForKey:@"keyForApplicationName"];
// Generate the script
NSString *appleScriptString =
[NSString stringWithFormat:@"tell application \"%@\"\nquit\nend tell",
appName];
// Execute the script
NSDictionary *errorInfo = nil;
NSAppleScript *run = [[NSAppleScript alloc] initWithSource:theScript];
NSAppleEventDescriptor *theDescriptor = [run executeAndReturnError:&errorInfo];
// Get the result if your script happens to return anything (this example
// really doesn't return anything)
NSString *theResult = [theDescriptor stringValue];
NSLog(@"%@",theResult);
này có hiệu quả chạy một kịch bản đó (nếu AppName là 'Safari') trông giống như:
tell application "Safari"
quit
end tell
Đó hoặc kiểm tra này SO câu hỏi
Điều này là tốt nhưng nó không hoạt động cho tất cả các ứng dụng, vì vậy tôi upvoted nhưng không giải thưởng tiền thưởng. – pasawaya
- 1. Tùy chọn ứng dụng ca cao XCode?
- 2. Mẫu "Ứng dụng cảm ứng ca cao" từ Xcode 3.1.1
- 3. Đại biểu ứng dụng - Ca cao
- 4. Nơi tìm kiếm các định dạng ngày tháng được sử dụng trong ca cao/ca cao?
- 5. kiểm tra kết nối internet trong ứng dụng ca cao
- 6. Kiểm soát iTunes từ ứng dụng ca cao
- 7. Ca cao chuyển tiêu điểm sang ứng dụng của tôi
- 8. Kiến trúc ứng dụng ca cao trên Mac OS X
- 9. Có nhiều video Ca cao và Ca cao cảm ứng có giá trị hơn không?
- 10. Hộp cát ứng dụng ca cao - Lỗi khi tải gói
- 11. Ca cao NSStatusBar Global HotKey
- 12. Ví dụ về các ứng dụng iPhone ca cao được mã hóa tốt trên github
- 13. Ca cao không có XCode
- 14. ca cao phát mp3
- 15. Bộ sưu tập rác có được sử dụng trong các ứng dụng Ca cao chất lượng không?
- 16. Cách bắt đầu và chấm dứt một ứng dụng từ bên trong ứng dụng ca cao trên máy Mac
- 17. Loại tệp khổ sở - Ca cao
- 18. Điều hướng WebView ca cao trắng flash
- 19. Hiển thị hình ảnh trong ứng dụng trạng thái ca cao
- 20. thêm NSTimeInterval vào NSDate trong ca cao
- 21. Ca cao: lấy WebView mainFrame html chuỗi
- 22. Xác định khoảng thời gian mili giây trong ca cao
- 23. Logger tốt nhất cho ca cao
- 24. Làm thế nào để lập trình ứng dụng làm cho ca cao hoạt động
- 25. Làm thế nào để gói một gói ruby thành ứng dụng ca cao [Objective-C]?
- 26. Gửi một ca cao hành động - IBAction
- 27. Ca cao: Từ điển có khóa enum?
- 28. cách xử lý nút đóng cửa sổ trong ca cao
- 29. Ca cao: Nhấn chuột phải vào NSStatusItem
- 30. Chuyển cụm ca cao sang ứng dụng và sau đó chuyển đổi trở lại
Nếu bạn không có 300 điểm, bạn có thể kiếm tiền thưởng bằng cách nào? –
@boyfarrell - Tôi đặt tiền thưởng vào đó. – pasawaya