2017-10-03 10 views
0

私のMacアプリケーションのシステムワイドキーボード入力を検出しようとしています。私は以下のコード使用しています行うには:これは完璧に動作し、追跡しながらaddGlobalMonitorForEventsMatchingMaskingハンドラがSafariの特定の入力に対してトリガされない

[NSEvent addGlobalMonitorForEventsMatchingMask:NSEventMaskKeyDown 
handler:^(NSEvent *event) { 
     NSString *eventChars = [event characters]; 
     unichar keyChar = [eventChars characterAtIndex:0]; 
     NSLog(@"keyboard char is %c",keyChar); 
    }]; 

をキーボード入力は、ユーザーが任意のWebページ(例では、パスワードを入力しようとする場合にのみ、ハンドラがトリガされません、Safariの上の任意の場所に入力されましたFacebookのログインページのパスワードボックス、パスワードボックスを持つログインページ)。ユーザー名の入力を追跡できるのに対し、パスワードの入力はできません。

これは正常な動作か、これはChromeで完全に動作するため、何か不足していますか?すべてのキーボード入力は、Google Chromeのグローバルモニタで追跡できますが、Safariのこの特定のケースでのみ失敗します。

答えて

0

NSSecureTextField(またはNSSecureTextFieldCell)に送信される主要イベントは、イベント・モニターがそれらを傍受または読み取ることができないようにマスクされています。これは、入力時にアプリケーションがパスワードを盗むのを防ぐセキュリティ機能です。パスワードを回避するAPIはありません。

関連する問題