コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
Xamarin.Mac/アクセシビリティの許可の有無を取得する
」を編集中 (節単位)
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
==実装:ApplicationServicesフレームワークを使用する== ApplicationServicesという標準フレームワークのAPIを叩くことで実現できる。 管理者権限は必要ない。 なお、[[Mac OS X 10.8]]([[Mountain Lion]])以前はAXAPIEnabledメソッドを使用し、[[Mac OS X 10.9]]([[Mavericks]])以降はAXIsProcessTrustedWithOptionsメソッドを使用するようになっており、[[OS]]のバージョンにより叩くべきメソッドが異なる。これはアクセシビリティの設定が、Mac OS X 10.8まではOSにひとつの許可設定であったが、Mac OS X 10.9からはアプリ単位の許可設定となったためだと思われる。 [[Xamarin.Mac]]にはApplicationServicesフレームワーク関連のライブラリが無いようなので直接叩いてやる。 <source lang="csharp"> using System; using System.Runtime.InteropServices; using MonoMac.Foundation; namespace PrivacyAccessibility { public static class ApplicationServices { public const string DllName = "/System/Library/Frameworks/ApplicationServices.framework/ApplicationServices"; [DllImport(DllName)] public extern static bool AXIsProcessTrustedWithOptions(IntPtr option); [DllImport(DllName)] public extern static bool AXAPIEnabled(); public static bool IsCurrentProcessTrusted() { var dic = NSDictionary.FromFile(@"/System/Library/CoreServices/SystemVersion.plist"); var osVersion = new Version(dic["ProductVersion"].ToString()); Console.WriteLine(osVersion); if (new Version(10,9) <= osVersion) {// 10.9 Mavericks以降 var options = IntPtr.Zero; return AXIsProcessTrustedWithOptions(options); } else {// 10.8 Mountain Lion以前 return AXAPIEnabled(); } } } } </source> AXIsProcessTrustedWithOptionsメソッドの引数に「AXTrustedCheckOptionPrompt」に「1」を設定して渡してやると、アプリのアクセシビリティが未許可の場合に[[システム環境設定]]を開くかを確認するダイアログが表示される。なお、ダイアログが表示されても、そこで[[スレッド]]は止まらずに即座に[[戻り値]]「false」が返されて続行される。 <source lang="csharp"> var options = NSDictionary.FromObjectAndKey(new NSNumber(1), new NSString("AXTrustedCheckOptionPrompt")); AXIsProcessTrustedWithOptions(options.Handle); </source> また、古い[[OS]]の場合は自前でダイアログを表示する必要がある。新旧に対応し、かつ統一感を出すには自前で警告ダイアログを実装した方がいいかもしれない。これらの理由によりアクセシビリティの許可設定の確認と未許可時の警告ダイアログの表示は別々に処理した方が良いと思われる。 *[[MonoMac/モーダルウインドウを作成する]] *[[Xamarin.Mac/システム環境設定を開く]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
このページは 1 個の隠しカテゴリに属しています:
カテゴリ:スタブ
本文の横幅制限を有効化/無効化