問題タブ [cgeventtap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 仮想キープレスが間違ったアプリケーションに行く
pid が指定されたプロセスに仮想キープレスを送信する次のコードがあります。
キープレスを送信したいプロセスは、予想どおり、すぐに前面に出てきます。しかし問題は、最初のキープレスが、私のアプリケーションが前面に出る前に前面にあったアプリケーションに行くことです。テスト[app isActive]
すると、初めて false が返されます。最初のキーの後、すべてがうまくいきます。
なぜこうなった?プロセスを前面に出した後、キーイベントを投稿していますが。
macos - Mavericks+ の CGEventTapCreateForPSN (GetCurrentProcess は非推奨)
CGEventTapCreateForPSN
アプリケーションのキーをトラップおよびフィルタリングするために使用しています。他のアプリケーションのイベントをインターセプトすることに興味はありません。イベントタップは私の目的には重すぎると確信していますが、より良い方法を見つけることができず、イベントタップを使用すると機能します。
具体的には、このコードは私が望むことを行います。
また、コールバックは適切に処理され、イベントは現在のアプリケーションからのみインターセプトされます。
残念ながら、現在の値を取得するすべてのメソッドProcessSerialNumber
は 10.9 で廃止されました。ProcessSerialNumber
この初期化により、同じプロセス内の他のルーチンに渡す古い標準的な方法があります...
しかし、それは呼び出し時には機能しませんCGEventTapCreateForPSN
。ヘッダー ファイル docs はそのことを示しており、次のコード スニペットは確認として返さNULL
れます。
使用できますCGEventTapCreate
が、ホスト全体をタップします。アプリケーションに向けられていないものをフィルタリングする必要があり、CGEventTapProxy
不透明であり、それを使用して自分のアプリかどうかを判断する方法がわかりません。
廃止されたコードがまだ機能することを確認しましたが、Apple はいつでも削除することができます。CGEventTapCreateForPSN
それで、 Mavericks以降に電話をかけるためにどのように進めるべきか、誰か知っていますか?
ありがとう!
アップデート
10.11(エルキャピタンだったと思います)では、新しい機能が追加されました。ドキュメントはありませんが、 とほぼ同じ署名がありCGEventTapCreateForPSN
ます。
したがって、PID を最初のパラメーターとして使用できるため、非推奨の関数は必要ありません。
objective-c - マウス ダウン イベントのシミュレーション中に NSWindow がフリーズする
マウス ダウン イベントを受け取った後、NSWindow
フリーズします。Xcode でハングしているスレッドをキャプチャできません。次のコードを使用して、マウス イベントをシミュレートしています。
どうすればこれを解決できますか?
cocoa - Mac でファンクション キーのストロークをインターセプトする
F xキーではなく、特に音量アップ/ダウンとミュートで、MacOS のファンクション キー ストロークをインターセプトしたいと考えています。
明らかに、これは私のプログラムが最前面にあるときだけでなく、グローバルな方法で行う必要があります。
これはCGEventTapを使用して実現できると読みましたが、アプリケーションに対してルート権限または補助デバイス アクセスを有効にする必要があります。
VLC はこれを Back/Playback/Next ファンクション キーで行います。再生中の場合は、iTunes コントロールを完全に上書きします。 また、root になることも、補助デバイスへのアクセスを有効にすることさえも必要ありません。
何か案が?
objective-c - CGEventRef KeyHandler - Xcode - Mac
そのため、キーボードの上部にある数字を押すと、通常は記号が入力されるアプリがあります。しかし、アプリでは数字を入力します。
しかし、xcode で実行するとすべて正常に動作しますが、xcode の外部でアプリを開くと動作しません。
mac os x と xcode の最新のアップデートがあります。
ビデオ:
誰でも私を助けてもらえますか?
objective-c - AXIsProcessTrusted() が true の場合、OS X アプリを再起動して CGEventTapCreate() を実行する
私のアプリの機能の 1 つは、keyDown
イベントを検出し、いくつかの特定のキーに対して何らかの処理を行うことです。
だから、私はCGEventTapCreate
私の問題を解決するために使用し、私のコードは次のようになります:
また、プロセスの信頼を次のように扱います。
processTrusted が true になるまで、1 秒ごとに呼び出されます。
その後、奇妙なことが起こりました:
Xcode でアプリを実行し、信頼の Xcode を Privacy_Accessibility に追加すると、すべて正常に動作します。しかし、アプリをアーカイブ
Export as a Mac Application
してデスクトップに実行すると、CGEventTapCreate() が機能しません。
その後、10.9でプログラムによって補助デバイスへのアクセスを有効にするというこの投稿を見つけましたAXIsTrustedProcess()
。
ユーザーに自分でアプリを再起動するように指示するのは得策ではありません。そこで、プログラムで再起動して、これらのコードを に追加しようとしましたif processTrusted {}
:
つまり、 でアプリにチェックを入れると、Privacy_Accessibility
自動的に再起動します。
ここに別の奇妙なことがあります:
アプリは本当に終了し、自動的に起動します。しかし、再起動が完了すると、アプリの Privacy_Accessibility はチェックされません。
本当に混乱しています。誰かがプロセスの信頼に対処し、正しく実行する正しい方法を教えてくれることを願っていますCGEventTapCreate()
。
ありがとう!
swift - Cocoa: CGEvent で Command+Tab をシミュレートする
アプリでシミュレートしたいのですApplication Switcher
が、CGEvent でできると思います。
さて、CGEvent に関するいくつかの基本的な情報を学習した後、キーの押下をシミュレートできますCommand + Tab
。しかし、Application Switcher ウィンドウが点滅し、すぐに別のアプリに切り替わります。
hold
アプリを選択するには Command キーを押して Tab キーを押す必要があることに気付きました。だから、ここに私のコードがあります:
しかし、うまくいきません!何か案は?ありがとう!