도크와 마찬가지로 메뉴 막대를 자동으로 숨기는 유틸리티를 작성하고 싶습니다. 이 경우 은 OS X 10.4 전용 응용 프로그램 인 "Menufela"를 복제하지만 Snow Leopard는 복제합니다.시스템 전체 메뉴 막대를 자동 숨기기
[[NSApplication sharedApplication]
setPresentationOptions: NSApplicationPresentationAutoHideMenuBar
| NSApplicationPresentationAutoHideDock];
이 코드를 자동으로 숨 깁니다,하지만 응용 프로그램이 맨 앞 창 때의 메뉴 표시 줄 (도킹). 어떤 응용 프로그램이 열려 있든 관계없이이 행동 시스템을 폭넓게 적용하려면 어떻게해야합니까? ... 따라서 나는이 그것에 대해 이동하는 올바른 방법인지 확실 해요, InputManagers는 것 또한
내가 생각할 수있는
있는 유일한 방법은 InputManager이지만, 내가 전에 하나를 작성하지 않은 레오파드/스노우 레오파드 (Snow Leopard)의 제한된 - this SO question에서 :
그것은이나 그 UID를 변경 한 과정에서, 루트 또는 뻑이 소유하는 과정에서이를 실행되지 않습니다. 가장 중요한 점은 10.5는 입력 관리자를 64 비트 프로세스에로드하지 않으며 32 비트 사용조차도 지원되지 않으며 향후 릴리스에서 제거 될 것임을 나타냅니다.
나는 "향후 릴리스에서 제거 될 것"(스노우 레오파드에서만 작동해야 함)에 관심이 없으며 루트 소유 프로세스가 문제가되지 않는다고 생각합니다 (모든 GUI 응용 프로그램 현재로서는 64 비트 응용 프로그램 (Finder/Safari/등)에 코드를 주입해야합니다.
(원래이 질문은 제가 수퍼 유저의 here이지만, 겉보기에는 기존 유틸리티를 사용하면 StackOverflow와 더욱 관련이 있습니다.)
AppKit에서 사용하기 때문에 32 비트 요구 사항이 없을 것입니다. $ strings/System/Library/Frameworks/AppKit.프레임 워크/AppKit | grep "SetSystemUIMode" - [% @ % s0x % lx] 결과가 % ld 인 SetSystemUIMode (0x % lx, 0x % lx) 호출에 실패했습니다. –
이것은 코드이며 10.5에서 10.7까지의 PPC 및 Intel에서 실행했습니다. . 32 비트 요구 사항이있는 경우이를 실행하지 않았습니다. SetSystemUIMode (kUIModeAllHidden, kUIOptionAutoShowMenuBar); 현재 응용 프로그램에서만 작동하므로 OP 문제가 해결되지 않습니다. OP가 요구하는 것은 IMHO가 보안 문제를 묻는 시스템 해킹입니다. 내 첫 번째 질문은 "왜 화면이 너무 작아서 20 픽셀이 중요할까요?"라고 생각합니다. :) –