「Xamarin.MacでGlobal Event Monitorを使いキー入力を監視する」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
10行目: 10行目:
 
NSEventにNSEvent.AddGlobalMonitorForEventsMatchingMaskを叩いて監視対象のイベントの種類と発生時に呼ばれるイベントハンドラを設定するだけである。
 
NSEventにNSEvent.AddGlobalMonitorForEventsMatchingMaskを叩いて監視対象のイベントの種類と発生時に呼ばれるイベントハンドラを設定するだけである。
 
非常に簡単。
 
非常に簡単。
 
当初はNSEventMask.KeyDownで実装してみたが、これは文字キーの入力でしかイベントが発生せず、[[Shiftキー]]や[[Ctrlキー]]などを単品で押した場合には何も起こらない。
 
実装中のアプリでは[[Ctrlキー]]単品を[[ショートカットキー]]としており上記ではダメであった。
 
そこでNSEventMask.FlagsChangedに変えて実装してみたところ[[Ctrlキー]]単品でも上手くいった。
 
 
 
<source lang="csharp">
 
<source lang="csharp">
 
         public override void DidFinishLaunching(NSNotification notification)
 
         public override void DidFinishLaunching(NSNotification notification)
38行目: 33行目:
  
 
===アプリを許可する===
 
===アプリを許可する===
Global Event Monitorは[[OS]]のあらゆるイベントを監視できるため、一歩間違えば[[スパイウェア]]や[[キーロガー]]などの非常に危ういアプリも簡単に作り放題となる。
+
Global Event Monitorは[[OS]]のあらゆるイベントを監視できるので[[スパイウェア]]や[[キーロガー]]などの非常に危ういアプリも簡単に作り放題となる。
そのため[[Mac OS X]]では[[システム環境設定]]から明示的に許可したアプリでしかGlobal Event Monitorは機能しないようになっている。
+
そのため[[Mac OS X]]では[[システム環境設定]]から明示的にアプリを許可しないとGlobal Event Monitorは機能しないようになっている。
 
#左上のリンゴマークをクリック
 
#左上のリンゴマークをクリック
 
#システム環境設定を開く
 
#システム環境設定を開く
48行目: 43行目:
 
#中央のプラスマークをクリックして許可するアプリを追加する
 
#中央のプラスマークをクリックして許可するアプリを追加する
  
なお、このアクセシビリティの許可がされていない状態でGlobal Event Monitorを使用しているアプリを実行してもエラーも何も発生しない。
+
なお、アクセシビリティの許可がされていない状態でGlobal Event Monitorを使用しているアプリを実行してもエラーも何も発生しない。
この挙動は確実に半年くらいしてどんな実装だったかを忘れたころにトラブルになり、[[エラー]]も出ないので[[デバッグ]]も捗らず原因不明の[[バグ]]に悩まされ[[デスマーチ]]突入は決定的である。
+
この挙動は確実に半年くらいしてどんな実装だったかを忘れたころにトラブルになり、[[エラー]]も出ないの[[でデバッグ]]も捗らず原因不明の[[バグ]]に悩まされ[[デスマーチ]]突入は決定的である。
 
+
そのためアプリ起動時にアクセシビリティの許可がされているかを確認し警告を出す方法を模索しているが、まだ解決方法は見つかっていない。
これを回避するにはアプリ起動時にアクセシビリティの許可がされているかを確認し警告を出す必要がある。
 
*[[Xamarin.Mac/アクセシビリティの許可の有無を取得する]]
 
  
 
==関連項目==
 
==関連項目==
*[[Xamarin.Mac/アクセシビリティの許可の有無を取得する]]
 
 
*[[Xamarin.Mac/システム環境設定を開く]]
 
*[[Xamarin.Mac/システム環境設定を開く]]
 
*[[MonoMac/フルスクリーン表示に対応する]]
 
*[[MonoMac/フルスクリーン表示に対応する]]

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート:

このページは 1 個の隠しカテゴリに属しています: