【发布时间】:2010-12-23 11:38:34
【问题描述】:
我有一个场景,我需要将点击事件发送到一个独立的应用程序。我使用以下代码启动了该应用程序。
private Process app;
app = new Process();
app.StartInfo.FileName = app_path;
app.StartInfo.WorkingDirectory = dir_path;
app.Start();
现在我想向该应用程序发送鼠标点击消息,我有相对于应用程序窗口的特定坐标。我如何使用 Windows 消息或任何其他技术来做到这一点。
我用过
[DllImport("user32.dll")]
private static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 dwData, IntPtr dwExtraInfo);
它工作得很好,但也会导致指针移动。所以不适合我的需要。
然后我用。
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
它适用于最小化最大化,但不适用于鼠标事件。
我使用的mousevents代码是,
WM_LBUTTONDOWN = 0x201, //Left mousebutton down
WM_LBUTTONUP = 0x202, //Left mousebutton up
WM_LBUTTONDBLCLK = 0x203, //Left mousebutton doubleclick
WM_RBUTTONDOWN = 0x204, //Right mousebutton down
WM_RBUTTONUP = 0x205, //Right mousebutton up
WM_RBUTTONDBLCLK = 0x206, //Right mousebutton do
提前感谢您的帮助,等待反馈。
【问题讨论】:
-
停止发送输入消息,它们应该被发布。无论如何,使用
SendInput()可能会更好,这是伪造输入的正确方法。