「Xamarin.MacでDockアイコンを非表示にする」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「'''Mac OS X'''のシステムステータスバー(Windowsでいうタスクトレイ)にアイコンを表示する、いわゆる常駐アプリ...」) |
imported>Administrator 細 (Administrator がページ「Xamarin.Mac/Dockアイコンを非表示にする」を「Xamarin.MacでDockアイコンを非表示にする」に移動しました) |
||
(他の1人の利用者による、間の3版が非表示) | |||
9行目: | 9行目: | ||
#* 型に「Boolean」 | #* 型に「Boolean」 | ||
#* 値に「Yes」 | #* 値に「Yes」 | ||
+ | |||
+ | ==実装2: 動的に制御する== | ||
+ | info.plistでドックアイコンを非表示にする方法では常に非表示になってしまい使いにくい場面も多い。 | ||
+ | [[ソースコード]]で動的に制御できると捗る。 | ||
+ | |||
+ | NSApplicationインスタンスのActivationPolicyプロパティに、「Accessory」または「Prohibited」を設定するとドックアイコンが非表示になり、「Regular」を設定するとドックアイコンが表示になる。 | ||
+ | <source lang="csharp"> | ||
+ | public partial class AppDelegate : NSApplicationDelegate | ||
+ | { | ||
+ | // 〜〜〜中略〜〜〜 | ||
+ | |||
+ | public override void DidFinishLaunching(NSNotification notification) | ||
+ | { | ||
+ | var app = NSApplication.SharedApplication; | ||
+ | app.ActivationPolicy = NSApplicationActivationPolicy.Accessory; | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | 上記の例ではAppDelegateのDidFinishLaunchingメソッドでドックアイコンを消しているがこれに限らず、たとえばNSApplicationのインスタンスを生成しているMainメソッドでいきなり叩いても動くようだ(NSApplication.Initメソッド呼び出し後であればどこでも良いようだ)。 | ||
+ | <source lang="csharp"> | ||
+ | static class MainClass | ||
+ | { | ||
+ | static void Main(string[] args) | ||
+ | { | ||
+ | NSApplication.Init(); | ||
+ | |||
+ | var application = NSApplication.SharedApplication; | ||
+ | application.ActivationPolicy = NSApplicationActivationPolicy.Accessory; | ||
+ | application.Delegate = new AppDelegate(); | ||
+ | application.Run(); | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
==その他== | ==その他== | ||
+ | <del> | ||
[[Xamarin.Mac]]ではHIServices.frameworkが使えないので[[ソースコード]]レベルで動的に制御することはできない<ref>https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/OSX_Technology_Overview/SystemFrameworks/SystemFrameworks.html</ref>。 | [[Xamarin.Mac]]ではHIServices.frameworkが使えないので[[ソースコード]]レベルで動的に制御することはできない<ref>https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/OSX_Technology_Overview/SystemFrameworks/SystemFrameworks.html</ref>。 | ||
+ | </del> | ||
==関連項目== | ==関連項目== |
2019年5月22日 (水) 05:14時点における最新版
Mac OS Xのシステムステータスバー(Windowsでいうタスクトレイ)にアイコンを表示する、いわゆる常駐アプリケーションではドック(Windowsでいうタスクバー)のアイコンは非表示にしたい。
実装1[編集 | ソースを編集]
プリファレンスファイルで設定する[1]。
- info.plistファイルを開く
- 下部にあるタブで「ソース」を選ぶ
- Add new entryをクリックして以下の一行をする
- プロパティに「LSUIElement」(Application is agentと表示される)
- 型に「Boolean」
- 値に「Yes」
実装2: 動的に制御する[編集 | ソースを編集]
info.plistでドックアイコンを非表示にする方法では常に非表示になってしまい使いにくい場面も多い。 ソースコードで動的に制御できると捗る。
NSApplicationインスタンスのActivationPolicyプロパティに、「Accessory」または「Prohibited」を設定するとドックアイコンが非表示になり、「Regular」を設定するとドックアイコンが表示になる。
public partial class AppDelegate : NSApplicationDelegate
{
// 〜〜〜中略〜〜〜
public override void DidFinishLaunching(NSNotification notification)
{
var app = NSApplication.SharedApplication;
app.ActivationPolicy = NSApplicationActivationPolicy.Accessory;
}
}
上記の例ではAppDelegateのDidFinishLaunchingメソッドでドックアイコンを消しているがこれに限らず、たとえばNSApplicationのインスタンスを生成しているMainメソッドでいきなり叩いても動くようだ(NSApplication.Initメソッド呼び出し後であればどこでも良いようだ)。
static class MainClass
{
static void Main(string[] args)
{
NSApplication.Init();
var application = NSApplication.SharedApplication;
application.ActivationPolicy = NSApplicationActivationPolicy.Accessory;
application.Delegate = new AppDelegate();
application.Run();
}
}
その他[編集 | ソースを編集]
Xamarin.MacではHIServices.frameworkが使えないのでソースコードレベルで動的に制御することはできない[2]。