6

2010 年に、Pierreこの質問をしました (彼の受け入れられた回答は私には当てはまりません)。

私は同じ問題を抱えています: Cocoa アプリケーションからプログラムを使用して画面上でマウスを正常に移動 (およびオフ!?!) できますが、マウスをドックの場所に移動しても表示されません (一部の他のアプリケーションがマウス移動イベントを登録していない (例: マウスを削除するゲーム)

したがって、私が使用している方法は次のとおりです。

void PostMouseEvent(CGMouseButton button, CGEventType type, const CGPoint point)
{
  CGEventRef theEvent = CGEventCreateMouseEvent(NULL, type, point, button);
  CGEventSetType(theEvent, type);
  CGEventPost(kCGSessionEventTap, theEvent);
  CFRelease(theEvent);
}

そして、マウスを動かしたいときは、次を実行します。

PostMouseEvent(0, kCGEventMouseMoved, mouseLocation);

このコードは、リンクなどのマウスオーバー イベントを生成することに注意してください。

2013 年になりましたが、この問題を修正することはできますか?

御時間ありがとうございます!

4

2 に答える 2

3

カーソルをゆがめ、マウス移動イベントを生成します。たとえば、カーソルをワープすると、それ自体はイベントを生成しませんが、その後のマウス移動イベントを変更して、移動した距離をマウス デルタに含めることを経験から知っています。合成された移動イベントに適切なデルタ値が含まれるかどうかはわかりません。

于 2013-03-16T05:06:10.033 に答える
0

OK、明らかにMacOSXでは、ドックを表示するためにマウスを画面の端に正確に配置する必要があります。私はドックを画面の左側に置いているので(多くのプログラムがウィンドウの下部に重要なボタンを置いているため)、私がしなければならなかったのは言うだけでした

if (mouseLocation.x < 0)
{
    mouseLocation.x = 0;
}

そしてそれはうまくいきました!

また、KenThomasesのアイデアを使用してカーソルをワープします。

(ドックを表示できるため、この回答は正しいとマークされていますが、マウス入力に応答しないアプリケーションがまだいくつかあります)

于 2013-03-16T22:12:00.740 に答える