by @sharkattack51

May 10, 2015

マウスの強制操作

Win環境(WPF)でマウスの強制操作に関してハマった場合の対応方法。何故。

方法1

今まではここら辺を参考にしていた。 http://homepage2.nifty.com/nonnon/SoftSample/CS.NET/SampleSendInput.html

user32.dllからアンマネージdll関数のSendInput()でエミュレート操作データを作って送出。実行。

で、今回WPF環境で使おうとしたら動かなくて何故なのかー。

方法2

調べた結果、こっちの方法を参考にしたらいけた。ていうかまんま。 http://puarts.com/?pid=1144

WPF内のSetCursorPos()とアンマネージdll関数のmouse_event()でイベント発火させると良いらしい。

考察

原因は分からん。エラーも何も出ずに全力で無視されるんだけど、フレームワーク都合の何かっぽい。 WPFが低レイヤーのどこかでイベントを上書きしてるんだろうか。 方法1はWPF環境でなければ普通はいける。UnityのC#上からとかでも問題はない。