2

ドックのように、メニュー バーを自動的に非表示にするユーティリティを作成したいと考えています。これは、OS X 10.4 のみのアプリケーション「Menufela」を複製しますが、Snow Leopard 用です。

[[NSApplication sharedApplication]
     setPresentationOptions:   NSApplicationPresentationAutoHideMenuBar
                             | NSApplicationPresentationAutoHideDock];

このコードは、メニュー バー (およびドック) を自動的に非表示にしますが、アプリケーションが最前面のウィンドウにある場合のみです。開いているアプリケーションに関係なく、この動作をシステム全体に適用するにはどうすればよいですか?

私が考えることができる唯一のものはInputManagerですが、これまでに書いたことがないので、これが正しい方法であるかどうかはわかりません..

また、Leopard/Snow Leopard の時点で InputManagers が制限されているようです - from this SO question :

root や well が所有するプロセスや、uid を変更したプロセスでは実行されません。最も重要なことは、10.5 が Input Manager を 64 ビット プロセスにロードせず、32 ビットの使用でさえサポートされておらず、将来のリリースで削除されることが示されていることです。

「将来のリリースで削除される予定」については心配していません (Snow Leopard で動作する必要があるだけです)。root 所有のプロセスが問題になるとは思いません (すべての GUI アプリケーションは現在の)、しかしおそらくコードは多くの 64 ビット アプリケーション (Finder/Safari/など) に挿入する必要があります。

(私はもともと SuperUser, hereでこれを尋ねましたが、これを達成するための既存のユーティリティがないように見えたので、StackOverflow に関連しています)

4

4 に答える 4

2

キオスク API はおそらくこれに最適な方法ですが、私は何年も使用しておらず、サポートされているかどうかもわかりません。

http://developer.apple.com/mac/library/technotes/tn2002/tn2062.html

于 2009-10-12T00:20:45.287 に答える
2

メニュー バーを非表示にする小さな SIMBL プラグインをハックしました: http://github.com/Crazor/MenuBarHider 32 ビット アプリに限定されない SetSystemUIMode() Carbon 呼び出しを使用します。

于 2010-10-04T18:31:49.857 に答える
1

この最近のCocoaWithLoveの記事には、メニューバーを非表示にする方法に関する情報があります。

http://cocoawithlove.com/2009/08/animating-window-to-fullscreen-on-mac.html

ただし、CarbonAPI(SetSystemUIMode())を使用するには、アプリが32ビットである必要があり、アプリケーションの範囲外では機能しません。

編集:そしてもう少し読んでみると、このAPIは-[NSApplication setPresentationOptions]できないことは何もしていないようです。

于 2009-10-12T04:07:06.070 に答える
1

私自身は Snow Leopard で使用したことはありませんが、システム全体に注入する唯一の方法で、可能性さえあるのはmach_starであり、それでさえ少し注意が必要です。Apple は最近、これを簡単に行っていません。そのため、多くの古いハックがタイムリーに更新されていないか、まったく更新されていません。

于 2009-10-12T00:38:40.767 に答える