我希望編寫一個實用程序來自動隱藏菜單欄,就像停靠欄一樣。這將 複製一個OS X 10.4應用程序「Menufela」,但爲雪豹。自動隱藏系統範圍內的OS X菜單欄
[[NSApplication sharedApplication]
setPresentationOptions: NSApplicationPresentationAutoHideMenuBar
| NSApplicationPresentationAutoHideDock];
此代碼自動隱藏菜單欄(和停靠欄),但僅限於應用程序是最前面的窗口時。無論打開哪個應用程序,我將如何應用此係統範圍的行爲?
我能想到的唯一的事情是輸入管理,但我沒有以前寫的一個,所以我不能確定這是否是去做正確的方式..
而且似乎InputManagers是限於豹/雪豹 - 從this SO question:
它不會在root或whell擁有的進程中運行它們,也不會在修改其uid的進程中運行它們。最重要的是,10.5不會將輸入管理器加載到64位進程中,並且表明即使32位使用也不受支持,並且將在未來版本中刪除。
我並不擔心「將在未來版本中被刪除」(它只需要在Snow Leopard上運行),並且我不認爲根擁有的進程是一個問題(所有GUI應用程序應該是當前運行),但大概代碼將不得不被注入許多64位應用程序(Finder/Safari/etc)
(我最初問這個超級用戶,here,但由於看起來沒有現有的實用工具來實現這一點,它與StackOverflow更相關)
由於AppKit使用它,它可能不會帶來任何32位的要求。 $ strings/System/Library/Frameworks/AppKit。framework/AppKit | grep「SetSystemUIMode」 - [%@%s0x%lx]調用SetSystemUIMode(0x%lx,0x%lx)失敗,結果爲%ld – 2009-10-12 08:12:13
這是代碼,我在PPC和Intel上從10.5到10.7 。如果有32位的要求,我還沒有碰到它。 SetSystemUIMode(kUIModeAllHidden,kUIOptionAutoShowMenuBar);這不能解決OP問題,因爲它僅適用於當前應用程序。 OP所要求的是對系統的一種破解,恕我直言,它只是在考慮安全問題。我想我的第一個問題是「爲什麼你的屏幕很小,20像素很重要?」 :) – 2011-10-05 14:50:58