問題タブ [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.

0 投票する
3 に答える
160 参照

objective-c - 仮想キープレスが間違ったアプリケーションに行く

pid が指定されたプロセスに仮想キープレスを送信する次のコードがあります。

キープレスを送信したいプロセスは、予想どおり、すぐに前面に出てきます。しかし問題は、最初のキープレスが、私のアプリケーションが前面に出る前に前面にあったアプリケーションに行くことです。テスト[app isActive]すると、初めて false が返されます。最初のキーの後、すべてがうまくいきます。

なぜこうなった?プロセスを前面に出した、キーイベントを投稿していますが。

0 投票する
2 に答える
916 参照

macos - Mavericks+ の CGEventTapCreateForPSN (GetCurrentProcess は非推奨)

CGEventTapCreateForPSNアプリケーションのキーをトラップおよびフィルタリングするために使用しています。他のアプリケーションのイベントをインターセプトすることに興味はありません。イベントタップは私の目的には重すぎると確信していますが、より良い方法を見つけることができず、イベントタップを使用すると機能します。

具体的には、このコードは私が望むことを行います。

また、コールバックは適切に処理され、イベントは現在のアプリケーションからのみインターセプトされます。

残念ながら、現在の値を取得するすべてのメソッドProcessSerialNumberは 10.9 で廃止されました。ProcessSerialNumberこの初期化により、同じプロセス内の他のルーチンに渡す古い標準的な方法があります...

しかし、それは呼び出し時には機能しませんCGEventTapCreateForPSN。ヘッダー ファイル docs はそのことを示しており、次のコード スニペットは確認として返さNULLれます。

使用できますCGEventTapCreateが、ホスト全体をタップします。アプリケーションに向けられていないものをフィルタリングする必要があり、CGEventTapProxy不透明であり、それを使用して自分のアプリかどうかを判断する方法がわかりません。

廃止されたコードがまだ機能することを確認しましたが、Apple はいつでも削除することができます。CGEventTapCreateForPSNそれで、 Mavericks以降に電話をかけるためにどのように進めるべきか、誰か知っていますか?

ありがとう!


アップデート

10.11(エルキャピタンだったと思います)では、新しい機能が追加されました。ドキュメントはありませんが、 とほぼ同じ署名がありCGEventTapCreateForPSNます。

したがって、PID を最初のパラメーターとして使用できるため、非推奨の関数は必要ありません。

0 投票する
1 に答える
110 参照

objective-c - マウス ダウン イベントのシミュレーション中に NSWindow がフリーズする

マウス ダウン イベントを受け取った後、NSWindowフリーズします。Xcode でハングしているスレッドをキャプチャできません。次のコードを使用して、マウス イベントをシミュレートしています。

どうすればこれを解決できますか?

0 投票する
0 に答える
141 参照

cocoa - Mac でファンクション キーのストロークをインターセプトする

F xキーではなく、特に音量アップ/ダウンとミュートで、MacOS のファンクション キー ストロークをインターセプトしたいと考えています。

明らかに、これは私のプログラムが最前面にあるときだけでなく、グローバルな方法で行う必要があります。

これはCGEventTapを使用して実現できると読みましたが、アプリケーションに対してルート権限または補助デバイス アクセスを有効にする必要があります。

VLC はこれを Back/Playback/Next ファンクション キーで行います。再生中の場合は、iTunes コントロールを完全に上書きします。 また、root になることも、補助デバイスへのアクセスを有効にすることさえも必要ありません。

何か案が?

0 投票する
1 に答える
325 参照

objective-c - CGEventRef KeyHandler - Xcode - Mac

そのため、キーボードの上部にある数字を押すと、通常は記号が入力されるアプリがあります。しかし、アプリでは数字を入力します。

しかし、xcode で実行するとすべて正常に動作しますが、xcode の外部でアプリを開くと動作しません。

mac os x と xcode の最新のアップデートがあります。

ビデオ:

https://youtu.be/67hRybEmJJY

誰でも私を助けてもらえますか?

0 投票する
1 に答える
880 参照

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()

ありがとう!

0 投票する
1 に答える
1462 参照

swift - Cocoa: CGEvent で Command+Tab をシミュレートする

アプリでシミュレートしたいのですApplication Switcherが、CGEvent でできると思います。

さて、CGEvent に関するいくつかの基本的な情報を学習した後、キーの押下をシミュレートできますCommand + Tab。しかし、Application Switcher ウィンドウが点滅し、すぐに別のアプリに切り替わります。

holdアプリを選択するには Command キーを押して Tab キーを押す必要があることに気付きました。だから、ここに私のコードがあります:

しかし、うまくいきません!何か案は?ありがとう!