| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Эмулирование мыши |
| Автор: grust 27.12.2006, 23:46 |
| Нужно написать прогу которая, будет нажимать сама в разных местах экрана, как это сделать? |
| Автор: codelord 28.12.2006, 02:05 | ||
тебе помогут
И mouse_event |
| Автор: witex 28.12.2006, 02:12 | ||
Разделом ошибся! Это в winapi. ваабще всё в мсдн есть!
установка координат. установку дал.. остальное ищи=) З.Ы. Codelord, чё то ты мня опередил=)) |
| Автор: grust 28.12.2006, 20:30 |
| А как сэмулировать нажатие на левую кнопку мыши? |
| Автор: WERITAS 28.12.2006, 23:20 | ||
В оконной процедуре обработать case WM_LBUTTONDOWN:, если ты конечно на API делаешь. |
| Автор: grust 29.12.2006, 00:28 |
| Мне нужно что он нажимал на кнопки в чужой программе |
| Автор: zkv 29.12.2006, 01:01 | ||
догадался, повторяю:
|
| Автор: grust 29.12.2006, 02:14 |
| Я просмотрел 10 страниц в поисковике, но так и не нашёл ни чего интересного, кроме SendMessage(Хэндл окна,WM_LBUTTONDOWN, MK_LBUTTON,MAKELONG(15,10)) но я не знаю какой хэндл у приложения на котрое мне нужно нажимать, как отловить этот хэдл? |
| Автор: zkv 29.12.2006, 03:52 | ||
| в первой ссылке пример для Дельфи, в третьей для Buildera... вот в MFC:
|
| Автор: W4FhLF 29.12.2006, 08:45 |
| Между нажатием и отпусканием сделай паузу Sleep(50); Часто сталкивался с ситациями, когда без этой задержки нажатие не осуществлялось, точнее оно может и было, но на него не успела отреагировать программа(вытесняющая многопоточность, не забываем). |
| Автор: grust 29.12.2006, 12:11 |
| mouse_event работает только на том окне, которое его запустило, а мне нужно, что бы он нажимал на чужое окно... |
| Автор: HellanD 29.12.2006, 12:50 | ||||
Дак ведь это делает функа FindWindow или FindWindowEx Вот читай
|
| Автор: zkv 29.12.2006, 13:39 | ||
неправда, следующий код кликнет куда угодно на экране:
|
| Автор: grust 29.12.2006, 15:52 |
| Да, код работает, на других приложениях, кроме того кторое мне надо..( Приложение на которое мне нужно нажимать - игрушка, со всеми вытекающими последствиями, постоянный рэндеринг и т.д. так вот на него он не кликает( |
| Автор: W4FhLF 29.12.2006, 18:50 | ||
grust, писал такое для игры(CS) и как раз с помощью mouse_event, правда флаги были другими, попробуй вот так:
Всё чётко работало и работает. |
| Автор: grust 29.12.2006, 19:38 |
| не компилируеться .\hook.cpp(41) : error C2065: 'cbuttons' : undeclared identifier .\hook.cpp(41) : error C2065: 'dwExtraInfo' : undeclared identifier |
| Автор: W4FhLF 29.12.2006, 20:57 | ||
Даже не знаю почему, наверное так сложились звёзды... |
| Автор: codelord 29.12.2006, 21:28 | ||||
если windows 2000/xp то dwData параметр там где cbutton вообще не нужен:
а второй пармерт dwExtraInfo можно найти:
Добавлено @ 21:34 а что делает если не секрет |
| Автор: Rockie 29.12.2006, 22:00 |
W4FhLF, хы, а что скрипт делал? |
| Автор: zkv 29.12.2006, 23:22 | ||
можно посоветовать только книжку почитать какую-нибудь по С/С++ |
| Автор: W4FhLF 30.12.2006, 09:43 | ||||
А может кстати и не для CS, я точно не знаю, мне просто заказали. Делала она следующее: Если держать 1.5 секунды левую кнопку мыши, то после этого периода кнопка начинает программно нажиматься каждый 100 миллисекунд. Ну насколько я понял, человеку это нужно было для того, чтобы из пистолета стрелять как из автомата |
| Автор: Rockie 30.12.2006, 14:15 |
| W4FhLF, понятно. Это просто делается и средствами CS, можно к примеру повесить выстрел и на нажатие кнопки мыши и на отжатие. А задержки кстати зависят напрямую от качества линии, то есть нужно их подстраивать. Наверное все-таки не для CS.. |
| Автор: Alx 18.8.2010, 12:20 |
| Столкнулся с похожей задачей: сразу несколько вопросов: 1) а игры могут распознать, что клик такими средствами был сэмулирован? что, если они как-то работают напрямую? (с DirectX?) 2) возможно, тогда встает необходимость написать драйвер, эмулирующий мышь? наверное, это должно быть на основе DDK/WDK? 3) может лежит уже что-то в форме API у кого нибудь? ищу 2 дня, пока не нашел.. |