информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetЗа кого нас держат?Spanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
На худой конец и mouse_event сойдёт, но не хотелось бы её... 17.12.08 02:04  Число просмотров: 4435
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка>
На худой конец и mouse_event сойдёт, но не хотелось бы её использовать, т.к. тогда компьютер только игрой и будет занят, а хотелось бы чтобы за ним ещё что-то делать можно было.

C SendMessage так можно, главное мышь на окно с программой не наводить.

А чем SendInput лучше mouse_event?
<programming>
[Win32] Эмуляция работы пользователя с мышью 16.12.08 19:06  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 16.12.08 19:07  Количество правок: 2
<"чистая" ссылка>
Суть проблемы. Пишу бота для игры в шахматы, точнее уже написал для одной программы, а теперь адаптирую для другой. Этой другой оказалась игра на рамблере: http://games.rambler.ru/game/chess/.

Вот этот код здесь работать не хочет:
	SendMessage(m_hwndBoard, WM_LBUTTONDOWN, 0, MAKELONG(xFrom, yFrom));
	SendMessage(m_hwndBoard, WM_MOUSEMOVE, 0, MAKELONG(xTo, yTo));
	SendMessage(m_hwndBoard, WM_LBUTTONUP, 0, MAKELONG(xTo, yTo));

---
хотя в другой программе работал. Здесь же, он поднимает шахматную фигуру, перемещает её, но опускать на доску не хочет. С чем это может быть связано?

Я наконец-то внял наставлениям amirul'а и HandleX и разобрасля с программой Spy++ (классная вещь!). Она выдаёт вот такую последовательность сообщений, когда я работаю с мышью "легально"
WM_MOUSEACTIVATE
WM_MOUSEACTIVATE
WM_SETCURSOR
WM_SETCURSOR
WM_LBUTTONDOWN
WM_MOUSEMOVE
...
WM_MOUSEMOVE
WM_LBUTTONUP
WM_SETCURSOR
WM_SETCURSOR

---
По аналогии с этим сформировал свои сообщения через SendMessage, но желаемого результата так и недобился.

Если кратко вопрос в следующем: как поднятую в рамблере шахматную фигуру поставить туда, куда я хочу?
используй mouse_event() или лучше SendInput() 17.12.08 00:19  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
используй mouse_event() или лучше SendInput()

VOID mouse_event(          DWORD dwFlags,
    DWORD dx,
    DWORD dy,
    DWORD dwData,
    ULONG_PTR dwExtraInfo
);

UINT SendInput(          UINT nInputs,
    LPINPUT pInputs,
    int cbSize
);


---
> Суть проблемы. Пишу бота для игры в шахматы, точнее уже
> написал для одной программы, а теперь адаптирую для другой.
> Этой другой оказалась игра на рамблере:
> http://games.rambler.ru/game/chess/.
>
> Вот этот код здесь работать не хочет:
>
> 	SendMessage(m_hwndBoard, WM_LBUTTONDOWN, 0,
> MAKELONG(xFrom, yFrom));
> 	SendMessage(m_hwndBoard, WM_MOUSEMOVE, 0,
> MAKELONG(xTo, yTo));
> 	SendMessage(m_hwndBoard, WM_LBUTTONUP, 0,
> MAKELONG(xTo, yTo));
> 

---
> хотя в другой программе работал. Здесь же, он поднимает
> шахматную фигуру, перемещает её, но опускать на доску не
> хочет. С чем это может быть связано?
>
> Я наконец-то внял наставлениям amirul
> и HandleX и разобрасля с программой
> Spy++ (классная вещь!). Она выдаёт вот такую
> последовательность сообщений, когда я работаю с мышью
> "легально"
>
> WM_MOUSEACTIVATE
> WM_MOUSEACTIVATE
> WM_SETCURSOR
> WM_SETCURSOR
> WM_LBUTTONDOWN
> WM_MOUSEMOVE
> ...
> WM_MOUSEMOVE
> WM_LBUTTONUP
> WM_SETCURSOR
> WM_SETCURSOR
> 

---
> По аналогии с этим сформировал свои сообщения через
> SendMessage, но желаемого результата так и недобился.
>
> Если кратко вопрос в следующем: как поднятую в рамблере
> шахматную фигуру поставить туда, куда я хочу?
На худой конец и mouse_event сойдёт, но не хотелось бы её... 17.12.08 02:04  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка>
На худой конец и mouse_event сойдёт, но не хотелось бы её использовать, т.к. тогда компьютер только игрой и будет занят, а хотелось бы чтобы за ним ещё что-то делать можно было.

C SendMessage так можно, главное мышь на окно с программой не наводить.

А чем SendInput лучше mouse_event?
А ты уверен - может, эта фигура по правилам шахмат - туда не ходит? 16.12.08 22:17  
Автор: Neznaika <Alex> Статус: Member
<"чистая" ссылка>
уверен, фигура зависает над той клеткой, куда должна упасть 17.12.08 01:58  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка>
А если использовать PostMessage? 16.12.08 19:43  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка>
не помогает 17.12.08 01:58  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка>
В общем я додумался до того, что в этом флеш клиенте стоит... 25.01.09 08:46  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка>
В общем я додумался до того, что в этом флеш клиенте стоит какая-то защита от автоматического нажатия мыши. Я обнаружил, что если перед началом эмуляции мыши нажать левой кнопкой на окно клиента, то дальше SendMessage и PostMessage прокатывает.

Плюс на другом флеш клиенте (правда не на браузерном, а на "программном") SendMessage и PostMessage работают на ура.

Обходное решение через mouse_event найдено, но общее решение через SendMessage и PostMessage продолжает интересовать, так что тему не закрываю.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach