我希望编写一个实用程序来自动隐藏菜单栏,就像Dock一样。这个会 复制一个仅限OS X 10.4的应用程序“Menufela”,但对于Snow Leopard。
[[NSApplication sharedApplication]
setPresentationOptions: NSApplicationPresentationAutoHideMenuBar
| NSApplicationPresentationAutoHideDock];
此代码自动隐藏菜单栏(和停靠栏),但仅限于应用程序是最前面的窗口时。无论打开什么应用程序,我将如何在系统范围内应用此行为?
我唯一能想到的是一个InputManager,但我之前没有写过,所以我不确定这是否是正确的方法..
从Le {/ 3}}开始,似乎InputManagers受限于Leopard / Snow Leopard:
它不会在root或whell拥有的进程中运行它们,也不会在已修改其uid的进程中运行它们。最重要的是,10.5不会将输入管理器加载到64位进程中,并且表示即使32位使用也不受支持,将在以后的版本中删除。
我并不担心“将来会在版本中删除”(它只需要在Snow Leopard上运行),我不认为root拥有的进程是一个问题(所有GUI应用程序都应该运行)作为当前的),但可能必须将代码注入许多64位应用程序(Finder / Safari / etc)
(我最初在SuperUser this SO question上问过这个问题,但是因为似乎没有现成的实用工具来实现这一点,所以它与StackOverflow更相关)
答案 0 :(得分:2)
自助服务终端API可能是您最好的选择,虽然我多年没有使用它,也不知道它是否已经被支持了。
http://developer.apple.com/mac/library/technotes/tn2002/tn2062.html
答案 1 :(得分:2)
我乱砍了一个小的SIMBL插件来隐藏菜单栏:http://github.com/Crazor/MenuBarHider 它使用SetSystemUIMode()Carbon调用,不仅限于32位应用程序。
答案 2 :(得分:1)
我自己没有在Snow Leopard上使用过它,但据我所知,注入系统范围的唯一方法就是mach_star,即使这样也有点棘手。 Apple现在并没有这么容易,这就是为什么很多旧的黑客都无法及时更新或者根本没有更新。
答案 3 :(得分:1)
最近的Cocoa With Love文章提供了有关如何隐藏菜单栏的信息:
http://cocoawithlove.com/2009/08/animating-window-to-fullscreen-on-mac.html
但是,使用CarbonAPI(SetSystemUIMode()
)要求应用程序为32位,并且不适用于应用程序范围。
编辑:并且进一步阅读,似乎此API不执行-[NSApplication setPresentationOptions]
无法执行的任何操作。