Отправить сообщение Click в другой процесс подачи заявки - PullRequest
1 голос
/ 23 декабря 2010

У меня есть сценарий, мне нужно отправить события кликов в независимое приложение.Я запустил это приложение со следующим кодом.

private Process app;
app = new Process();
app.StartInfo.FileName = app_path;
app.StartInfo.WorkingDirectory = dir_path;
app.Start();

Теперь я хочу отправить сообщение о щелчке мышью в это приложение, у меня есть конкретные координаты относительно окна приложения.Как я могу сделать это, используя Windows Messaging или любой другой метод.

Я использовал

[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);

Он хорошо работает для минимизации максимизации, но не работает для событий мыши.

Коды дляКоврики для мыши, которые я использую:

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

Спасибо за помощь заранее и ждем обратной связи.

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Для одного клика вы должны отправить два события мыши одновременно для точного события щелчка мыши.

SendMessage(nChildHandle, 0x201, 0, 0); //Mouse left down
SendMessage(nChildHandle, 0x202, 0, 0); //Mouse left up

Это работает в моем проекте.

0 голосов
/ 23 декабря 2010

Сохраните позицию курсора, используйте mouse_event и переместите курсор назад.mouse_event - действительно лучший способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...