- - PR -
[C#] マウス操作をプログラム側から再現したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-08-16 19:42
はじめまして。
マウス操作をプログラムで再現することは出来ますでしょうか。 (x,y)座標を指定すると、その場所をマウスでクリックしたような動作を行なうプログラムを書きたいのですが、 なにか方法をご存知でしたらお教え下さい。 | ||||
|
投稿日時: 2004-08-16 23:08
SendInputかな?
| ||||
|
投稿日時: 2004-08-17 09:09
mouse_event?
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&q=mouse%5Fevent+P%2FInvoke | ||||
|
投稿日時: 2004-08-18 08:14
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_mouse_event.asp Windows NT/2000/XPでは、SendInputを使ってください。 | ||||
|
投稿日時: 2004-08-19 17:43
皆様、返答ありがとうございます。
他の問題に取り組んでいて返信が遅くなってしまいました。 申し訳ございません。 質問した件ですが、mouse_eventを使って実装できました。 SetInputも調べてみたのですが、使い方がよくわからなくて・・。 ところで、 特定のウィンドウを基準とした(x,y)座標からマウス操作を再現することは可能でしょうか? 現在の実装では、ディスプレイ全体を基準とした(x,y)座標によるマウス操作の再現になっています。 基準とするウィンドウの位置や大きさを取得して、という方法がありそうな気もするのですが、どうすればよいでしょうか。 マウス操作の再現は以下のようなコードで実装しています。 --- using System.Runtime.InteropServices; private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002; private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004; [DllImport("user32.dll")] private static extern void mouse_event( UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 dwData, IntPtr dwExtraInfo ); System.Drawing.Point p = new System.Drawing.Point(x, y); Cursor.Position = p; mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, new System.IntPtr()); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, new System.IntPtr()); -- x,yの値は適当に自分で指定して、マウスをクリック | ||||
|
投稿日時: 2004-08-19 18:45
調べてみてPointToScreenを使えば出来そうだということがわかったのですが、
例えば pnt = pictureBox1.PointToScreen(p); のよう使う時の pictureBox1 の部分が外部プログラムによるウィンドウの場合はどうしたらよいでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2004-08-19 19:43
System.Windows.Forms.Form.Controlsから対象のWindowを取得して、System.Windows.Forms.Form.Boundsで、座標が計算できる・・・と思います。
|
1