Tôi đang cố gắng viết ứng dụng bổ sung cho menu Mac OS hiển thị menu ngữ cảnh có chứa các mục menu của ứng dụng hiện đang hoạt động khi người dùng nhấn một số phím nóng. Việc hiển thị menu ngữ cảnh tôi có thể làm tốt, nhưng dường như tôi không thể nhận được các mục menu của ứng dụng hiện đang hoạt động. Hiện tại, tôi đang sử dụng [[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:]
để nhận tên của các ứng dụng đang hoạt động, nhưng NSRunningApplication dường như chứa thông tin nhỏ quý giá khác. Có cách nào tôi có thể nhận thông tin về các menu ứng dụng từ một ứng dụng bên ngoài không?Mục tiêu-C: nhận thông tin trình đơn từ ứng dụng bên ngoài
UPDATE:
Sử dụng khuôn khổ ScriptingBridge dường như làm việc khá tốt, nếu bạn hài lòng sử dụng AppleScript:
SystemEventsApplication* sevApp = [SBApplication applicationWithBundleIdentifier:@"com.apple.systemevents"];
SystemEventsProcess* proc = [[sevApp applicationProcesses] objectWithName:appName];
for (SystemEventsMenuBar* menuBar in proc.menuBars) {
for (SystemEventsMenuBarItem* menuBaritem in menuBar.menuBarItems) {
NSLog(@"%@", menuBaritem.name);
}
}
sẽ in ra một danh sách các menu có sẵn từ thanh menu của ứng dụng . Đã không tìm thấy một cách để có được trình đơn ngữ cảnh, vì vậy tôi sẽ không gọi đây là trả lời chỉ được nêu ra ...
này là hữu ích quá: http://robnapier.net/blog/scripting-bridge-265
** CẢM ƠN BẠN! ** Tôi muốn cung cấp cho bạn nhiều hơn +1, nhưng tôi sẽ không biết làm cách nào. Biên dịch '/ System/Library/CoreServices/System Events.app' thành tiêu đề có lẽ là điều kỳ lạ nhất mà tôi từng làm với Xcode nhưng hey, nó hoạt động! Bạn có muốn biết vị trí của shortcut hoặc thuộc tính 'keyEquivalent' bị ẩn trong' SystemEventsMenuItem' không? – epologee