이것은 학업 방식의 질문에서 "가능한 일"입니다. 실제 목표는 없습니다.Objective-C : Cocoa 응용 프로그램을 "메뉴 전용"응용 프로그램으로 만들 수 있습니까?
minimalistic example here으로 재생하면서, 나는 창을 제거하고 앱을 "메뉴 전용"으로 만드는 밝은 아이디어를 생각해 내었습니다.
결과 코드입니다.
#import <Cocoa/Cocoa.h>
int main() {
[NSAutoreleasePool new];
[NSApplication sharedApplication];
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
id menubar = [[NSMenu new] autorelease];
id appMenuItem = [[NSMenuItem new] autorelease];
[menubar addItem:appMenuItem];
[NSApp setMainMenu:menubar];
id appMenu = [[NSMenu new] autorelease];
id appName = [[NSProcessInfo processInfo] processName];
id quitTitle = [@"Quit " stringByAppendingString:appName];
id quitMenuItem = [[[NSMenuItem alloc] initWithTitle:quitTitle
action:@selector(terminate:) keyEquivalent:@"q"] autorelease];
[appMenu addItem:quitMenuItem];
[appMenuItem setSubmenu:appMenu];
// Window code deleted
[NSApp activateIgnoringOtherApps:YES];
[NSApp run];
return 0;
}
이 코드는, 그러나, 메뉴를 얻는 것은 표시하기 위해 노력 또는 "초점은"다소 엉뚱한입니다. Dock에있는 아이콘을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴를 볼 수 있습니다. 아이콘을 클릭하면 앱을 정상적으로 종료 할 수있는 메뉴가 표시됩니다. 이라는 단어는 때때로입니다. 아직 메뉴를 표시 할 특정 트리거가 있는지 알지 못했습니다.
(주로 비어있는) 메뉴를 예상대로 표시하거나 초점을 맞추기 위해이 코드를 편집 할 수 있습니까? 무엇이든 창없이 할 수 있습니까?
Windows에서는 아이콘 전용 프로그램을 만드는 것이 가능했지만 최소한 그려지는 창은 최소화 된 아이콘이었으며 적절한 창을 "복원"할 방법이 없었습니다. Cocoa에서 비슷한 기술이 작동한다면, 나는 그것을 "속임수이지만 수용 가능한 해결책"이라고 부를 것입니다.
그건 이미 앱의 일부입니다. 'id menubar'에서 내려. –