Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Управление мышкой


Автор: rooot 17.4.2006, 01:50
#include <windows.h>
#include <iostream.h>

main()
{

int arrx[37] = {0,406,405,406,428,430,429,452,453,454,476,477,479
,504,505,505,528,528,529,552,552,552,577,577,577,6
04,605,603,628,628,627,651,652,652,676,675,675};
int arry[37] = {0,413,391,372,412,392,372,414,392,373,412,391,373
,414,393,371,415,393,373,414,393,373,414,393,372,4
14,393,372,413,393,374,415,393,373,414,394,372};

int num = 0;
cout << "Input number 1-36:\n";
cin >> num;

int i=0;
while (i<num-1) {
i++;

SetCursorPos(470,550);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(500);
SetCursorPos(arrx[i],arry[i]);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(500);

}

while (num<36) {
num++;

SetCursorPos(470,550);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(500);
SetCursorPos(arrx[num],arry[num]);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(500);

}

return 0;

}

почему то не перетаскиваются объкты ((((( Помогите... плиз.
Хотя на рабочем столе файлы перемещяет ((((
во флеш игре не хочет, поднимает фигуру перемещяет на нужную клетку и когда отпускает фигура не оказывается в нужном поле. Руками получается, может какие ограничения во флешках стоят? Подскажите плиз.
Сильно не пинать первый раз на С++ пишу, кодирую на ПХП ) 

Автор: DigitalDummy 17.4.2006, 03:52
Первое, что приходит в голову...
Во flash-игре, возможно, более сложный учёт поступающих сообщений от мыши, чем на рабочем столе.

Во-первых, попробуйте при вызове (mouse_event) явно указывать абсолютные координаты событий мыши.
Код

  ...
  // mouseX, mouseX - нужные вам координаты
  mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE, mouseX, mouseX, 0, 0);
  ...


Возможно, что flash просто не срабатывает сразу... Я бы, попробовал поторить события.
Например, что, если принудительно повторять событие перемещения мыши по текущим координатам после вызова SetCursorPos? Возможно, даже, несколько раз и со смещёнными в один пиксель координатами...
Код

  mouse_event(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, mouseX, mouseX, 0, 0);


Попробуйте разные интервалы Sleep(...). Чуть больше, чуть меньше...

И проверьте обязательно, активность не просто окна flash-игры, а активность той части окна, в которой выводится сама игра! Из-за этого тоже могут быть неточности... 

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