-
oleg_teacher (27.10.13 12:05) [0]Господа присяжные заседатели, необходима Ваша помощь в решении проблемы.
Мне необходимо в чужом окне захватить элемент и переместить за другими координатами того же окна.
Вот собственно часть кода:
Pt.x:=75;
Pt.Y:=325;
Pt := ClientToScreen(Pt);
SendMessage(wnd,WM_Move,0,(Pt.x shl 16)+ Pt.y);
SendMessage(wnd,WM_LBUTTONDOWN, 0,(Pt.x shl 16)+ Pt.y);
Pt2.X:=320;
Pt2.Y:=564;
Pt2 := ClientToScreen(Pt2);
SendMessage(wnd,WM_Move, 0,(Pt2.x shl 16)+ Pt2.y);
SendMessage(wnd,WM_LBUTTONUP, 0,(Pt2.x shl 16)+ Pt2.y);
Я продублировал свои же действия -
1. Перемещение на нужную координату.
2. Зажимание левой клавиши мыши.
3. Перемещение координаты в нужную позицию. (с объектом)
4. Отпускание мыши.
Но, почему то 4 не происходит, то есть объект не становится в нужную область. Когда я выполняю без //SendMessage(wnd,WM_LBUTTONUP, 0,(Pt2.x shl 16)+ Pt2.y)
реально объект находится под курсором... -
RWolf © (27.10.13 14:11) [1]Такие вещи, помнится, обычно через mouse_event делали.
Сейчас оно deprecated в пользу SendInput. -
oleg_teacher (27.10.13 14:31) [2]RWolf ©
Может и так, только насколько я понимаю mouse_event делает для глобального курсора. Если прога в фоне или свернута - это действовать не будет. Мне же в фоне нужно.
Тут же для mouse_event нигде не указывается окно в котором нужно делать, в отличии от SendMessage(wnd.... -
> oleg_teacher (27.10.13 12:05)
Что за "объекты" ты там перемещаешь с помощью WM_MOVE? Это сообщение есть лишь уведомление для ОКНА что его (ОКНО) переместили. Реально окно может его и игнорировать как и любое другое сообщение. Это не сообщение перемещения мыши. Тебе если что и нужно, то WM_MOUSEMOVE. -
oleg_teacher (27.10.13 15:50) [4]при смене WM_MOUSEMOVE - эффект тот же - переместилося в нужную позицию, но почему то WM_LBUTTONUP не сработал((. Это пробую писать для себя бот для игры. Объекты - это элементы в флеше...
-
> oleg_teacher (27.10.13 15:50) [4]
> переместилося в нужную позицию, но почему то WM_LBUTTONUP
> не сработал
а как ты понимаешь сработал или не сработал?
Предложение такое. Берешь SPY++, перемещаешь объект руками, смотришь какие сообщения и в какой последовательности посылались окну. Воспроизводишь последовательность. Только может оказаться что только сообщений недостаточно, например, окно может проверять свернуто оно или нет. -
oleg_teacher (27.10.13 16:54) [6]
> а как ты понимаешь сработал или не сработал?
а видно... объект который я перемещаю зависает над полем - куда ему нужно переместиться.. но там он не фиксируется... так как почему то WM_LBUTTONUP наверное не срабатывает, хотя странно((
вот принтскрин http://clip2net.com/s/62R6KW -
oleg_teacher (01.11.13 16:24) [7]нет предложений в какую сторону копать? Подскажите пж. просто столкнулся с непониманием((