Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Одновременный клик мышкой в разных местах...


Автор: saylar06 10.6.2012, 08:45
Собственно вопрос в названии темы, возможно ли так сделать?

 C эмулировать одновременный щелчок мышки (не так вначале туда щелкнул потом туда, а сразу в две точки)

Автор: Чучмек 10.6.2012, 10:14
http://vsokovikov.narod.ru/New_MSDN_API/Mouse_input/notify_wm_lbuttonup.htm
Через lParam передаются координаты мыши.  Младшее слово - X  старшее - Y. Больше одной пары координат за раз не передать.
Сообщения оконная процедура обрабатывает последовательно. 
Следовательно одному окну (окнам в одном потоке) никак. 

Автор: saylar06 10.6.2012, 10:46
Цитата(Чучмек @ 10.6.2012,  10:14)
http://vsokovikov.narod.ru/New_MSDN_API/Mouse_input/notify_wm_lbuttonup.htm
Через lParam передаются координаты мыши.  Младшее слово - X  старшее - Y. Больше одной пары координат за раз не передать.
Сообщения оконная процедура обрабатывает последовательно. 
Следовательно одному окну (окнам в одном потоке) никак.

эххх...

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

Код

       SetCursorPos(1774,858);
        mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
        mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
      Sleep(15);
       SetCursorPos(1798,858);
        mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
        mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);



P.S Опробовав на самописной программе выполняя определенное действие за клик, вроде действия начинались одновременно, но всё же есть подозрение на опоздание в 15 миллисекунд smile

Автор: Чучмек 10.6.2012, 11:30
Цитата(saylar06 @  10.6.2012,  10:46 Найти цитируемый пост)
используя нижеприведенный код у меня получилось кликнуть сразу по обеим вот только я не могу понять и определить произошел ли клик одновременно...

Одна программа или две? Если одна -  то обработка второго клика начнется не раньше, чем завершится обработка первого.  

Автор: RelictOs 10.6.2012, 12:54
попробуй сделать через доп. нить(Thread)

Автор: ~FoX~ 12.6.2012, 00:46
мышиный курсор, точнее в виндах hotpoint, штука аппаратная... так, что не плучица разрвать клик на две точки....

Автор: northener 12.6.2012, 01:05
Цитата(saylar06 @  10.6.2012,  08:45 Найти цитируемый пост)
Собственно вопрос в названии темы, возможно ли так сделать?

http://www.gunsmoker.ru/2008/10/x-y-z.html

Автор: Akella 12.6.2012, 17:03
А как вы себе представляете выполнять одновременно, в один момент времени 2 процедуры? Код выполняется "построчно". Даже если из разных потоков. Планировщик задач Windows всё равно не сделает этого. Мне так кажется.

Автор: Keeper89 12.6.2012, 18:18
Одновременно возможно, при мультитаче, например. В этом случае можно почитать http://msdn.microsoft.com/en-us/magazine/ee336016.aspx.

Автор: bems 12.6.2012, 23:31
Цитата(~FoX~ @  12.6.2012,  00:46 Найти цитируемый пост)
штука аппаратная... так, что не плучица разрвать клик на две точки

аппаратно как раз может и можно. Но вот где-то в связке драйвер_класса_мыши + поток_необработанного_ввода одновременные щелчки превратятся в последовательные события

Автор: northener 13.6.2012, 01:15
Цитата(bems @  12.6.2012,  23:31 Найти цитируемый пост)
аппаратно как раз может и можно.

Ну поскольку от автора уточнения именно задачи не последовало, то выскажусь.
Аппаратно как раз не возможно. И на уровне драйвера ОС тоже. Если только в случае специализировапнного драйвера под некоторое конкретное устройство и под некоторую конкретную задачу.

Автор: bems 13.6.2012, 01:38
Цитата(northener @  13.6.2012,  01:15 Найти цитируемый пост)
Аппаратно как раз не возможно

почему? насколько я помню (могу ошибаться) для каждой мыши создаётся свой девайс \Device\MouseClassN не говоря уже про PDO. А то что виртуальная мышь в системе только одна это уже заслуга более высокоуровневых компонент

Автор: Beltar 13.6.2012, 07:57
http://www.theweblog.net/kak-podklyuchit-k-kompyuteru-dve-myshki/

Практический эксперимент по подключению двух мышей. smile Результат немного предсказуем.

Автор: northener 14.6.2012, 00:35
Цитата(bems @  13.6.2012,  01:38 Найти цитируемый пост)
почему? насколько я помню (могу ошибаться) для каждой мыши создаётся свой девайс \Device\MouseClassN

Наверно у нас с вами разное понимание термина "аппаратно". Но поскольку этот термин употребил не автор вопроса, то предлагаю на это различие забить.
Лучше дождёмся разъяснения от автора - зачем ему такая экзотика понадобилась? А если не дождёмся, так и не надо будет ни о чём спорить. smile

Автор: DYUMON 16.6.2012, 09:49
оффтоп: 
постоянно вижу одинаковые темы на фрилансе.
там заказ . тут вопрос как сделать smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)