2017-01-28 13 views
9

私はCGEventsを使用しているため、MacOSのアプリケーションからiphoneシミュレータのマウスクリックをシミュレートしようとしています。Macのアプリケーションから他のアプリケーションへのマウスのクリックをシミュレートする方法

プロセスIDは、iPhoneシミュレータ

let point = CGPoint(x: 500 , y:300) 
let eventMouseDown = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: point, mouseButton: .left) 
let eventMouseUp = CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: point, mouseButton: .left) 
eventMouseDown?.postToPid(33554) 
eventMouseUp?.postToPid(33554) 

ための33554である私は、iOSシミュレータウィンドウにフォーカスし、私が変更された場合にのみ、このツールバーのためではなく、例えば、シミュレータで動作しているときは、マウスクリックをシミュレートしていることにも気づきましたするCGPoint(0,30)には、シミュレータのオプションをクリックします

enter image description here

が、私はiOSシミュレータ内のアプリをクリックしCGPointsを与えているときにその 動作しません

しかし、私はあなたがキーボードイベントを投稿することができますので、それはおそらく許可の問題ではありませんが、あなたはあなたの実行を試みることができると言う

let keyboardDown = CGEvent(keyboardEventSource: nil, virtualKey: 6, keyDown: true) 
let keyboardUp = CGEvent(keyboardEventSource: nil, virtualKey: 6, keyDown: false) 
keyboardDown?.postToPid(33554) 
keyboardUp?.postToPid(33554) 
+1

macOSではy軸が逆になっていることを覚えていますか? – Alistra

答えて

1

を使用してシミュレータにキーボードイベントを投稿することができていますプログラムをrootにして、それを排除してください。

イベントの座標は、想定していたものとは単純に異なる場合があります(反転されていますか?)。シミュレートされたアプリで何かを設定して、すべてのイベントをアプリケーションレベルで受信してみてください。

また、画面座標系の座標はありますか?たぶん、イベントはシミュレータによって受信され、それを配信するウィンドウの下にウィンドウがないために破棄されることがあります。シミュレータウィンドウを画面の各隅に移動し、座標に(10,10)のようなものを使用してみてください。

NSEventとそのCGEventメソッドを試して、必要に応じて正しく初期化される基になるcgeventを取得することもできます。それが動作すれば、あなたが欠けているものを簡単に解決することができます。

最後に、mouseEventSourceの場合、nilを渡すのではなく、でない場合は、を試してください。おそらくCGEventSourceRef eventSource = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);のようなものでしょうか?ヘルプで

土壇場の試み:

私は他のプログラムに製造されたマウスイベントをディスパッチ(旧)は、Macのアプリケーションを持っています。おそらくそのsource codeは何かを明らかにすることができます。

今のところそれがどれもうまくいかない場合は、あなたが達成しようとしていることを正確に教えてください。その可能性はずっと良い方法です。ここ

0

ポストこの質問は

あなたは麻薬アンドドロップの作業examplesに見てみると、クリック機能を行うことができるOS Xの送信クリックイベントでGoogleで最上位であるため。

クリックするウィンドウが1つだけ表示されている必要があります。

0

あなたが接近していた(スウィフト4):

let mousePosition: CGPoint = .zero // your position here 
let mouseEvent = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, 
mouseCursorPosition: mousePosition, mouseButton: .left) 
mouseEvent?.postToPid(33554) 

最初に認識していなかった重要な詳細は、そのアプリのサンドボックスが動作するには、このAPIを無効にする必要があります。

関連する問題