Что нового

[Мышь, клавиатура] [Wartune] Возможна ли эмуляция нахождения мыши в неактивном/скрытом окне

Shikaka

Новичок
Сообщения
6
Репутация
0
Приветствую.

Пишу простого бота для Wartunes. (flash-игра)
Изначально пишу с расчетом на неактивное окно, расположенное за пределами экрана.

для отправки текста использую ControlSend
для кликов мышки ControlClick
для получения координат скопированную с данного форума _PixelGetColorEx

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

Интересует если ли какая либо возможность без наведения мышки сообщить моему Control о наличии мышки по определенным координатам и возможно даже движения мыши?





Добавлено:
Сообщение автоматически объединено:

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

upd 10.08.2013: изменил название темы в соответствии с правилами раздела


Добавлено:
Сообщение автоматически объединено:

Возможно описанное словами не очень понятно.

Код:
; если есть MouseMove, то MyClick сработает, если его закомментировать, то не сработает :(
; ВАЖНО! так только в одном месте, где кнопка до наведения мышкой на картинку игрока просто скрыта.
MouseMove(962, 340);
; Пробовал что то с WINAPI, но тоже не работает
;_WinAPI_Mouse_Event($MOUSEEVENTF_ABSOLUTE OR $MOUSEEVENTF_MOVE, 962, 350)
MyClick("Left", 2, 962, 340) ; Select Player to fight 


Func MyClick($btn,$count,$x,$y,$nodelay=False)
   if IsDebug() then
	  $c = _PixelGetColorEx($x,$y,$hGUI)
	  Debug("Click on "&$x&","&$y&" c:0x"&Hex($c,6))
   EndIf  
; для клика не нужно делать Control активным
;   ControlFocus($WindowTitle,'', $ControlID)
; смещаем координаты относительно окна, поскольку ControlClick работает только в координатах ControlID
   $pos = ControlGetPos($WindowTitle,"",$ControlID)
   if @error ==0 then
	  $dx = $pos[0]
	  $dy = $pos[1]
	  ControlClick($WindowTitle,'',$ControlID ,$btn, $count, $x-$dx, $y-$dy);
   Else	
	  $BrowserReady = False
   EndIf
   if not $nodelay then
	  Sleep(200)
   EndIf
EndFunc
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Сообщить не наведя возможности нету т.к. это флеш. Ты не можешь ссылаться на его кнопки так же как на кнопки винды. Что мешает сперва навести мышь, а потом нажать?
 
Автор
Shikaka

Shikaka

Новичок
Сообщения
6
Репутация
0
Мешают сразу 2 желания:

1. работать за компьютером пока работает бот
Это почти удается, если не делать ControlFocus то все вообще замечательно, но для ввода текста фокус все таки приходится ставить, иначе флеш отказывается вводить буквы в поля.
2. запустить 2 бота одновременно
Это тоже более-менее работает, пока боты не начинают драться за ControlFocus ... но пока не критично.

Смотреть фильмы например можно совершенно безболезненно.

Я надеялся, что есть возможность либо создать на время "второй курсор" и его навести, либо эмулировать наведение средствами WinAPI
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Боты которые работают не мешая пользователю - не пользуются никакими средствами ввода типа мыши и клавиатуры. Хочешь такого бота - тебе дорога на пакетный уровень, остальные же действия - пустая трата времени. Запускай бота на вирт машине и будет тебе счастье. И мышь у тебя свободная и делай что хочешь и бот работает.
 
Автор
Shikaka

Shikaka

Новичок
Сообщения
6
Репутация
0
Поставил VMware и развернул 2виртуалки на WinXP.
жалею потраченного времени на поиски _PixelGetColorEx и ловлю глюков с ControlSend

Upd: одни глюки заменились другими :rofl: VM отчаяно виснут
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Странно, хотя ничегт странного, ставь семерку или же вообще восьмерку, каждая новая ось поддерживает все больше способов виртуализации. У меня на работе, все сервера перенесены в виртуальную среду VMWare Workstation, и теперь вместо двух комнат, умещаются в одном 4U кейсе :smile:. И всё работает как часы.
 
Верх