Kibor |
Отправлено: 05 Марта, 2015 - 20:23:31
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
VladosS пишет: Вот, новый вариант, упростил поиск
хм.. черезчур упрощен...
он не рабочий.
finddynamic надо вызывать 2 раза.
первый раз для получения изображения. второй для нахождения динамики.
типа этого
Цитата: int f,g;
win wind=window (-1, "MozillaWindowClass", -1);
if (wind==0) {messagebox ("нет указател........");goto er;}
pause(500);
loop:;
sleep(10);
if (getkeystate(192)==1)Poisk();
goto loop;
er:;
function Poisk()
{
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, wind.widthclient, wind.heightclient, wind);
sleep(500);
if (finddynamic(1, #f, #g, 20, 20, 40, 40, 0, 0, wind.widthclient, wind.heightclient, wind)==1)
{
mousemove(f,g, wind);
}
} |
|
|
VladosS |
Отправлено: 05 Марта, 2015 - 20:34:37
|
Наблюдатель
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2015
Откуда: Россия
Репутация: 0
|
Мб так? Можно ли использовать mousemove в активном приложении, при условии DX11?
CODE--
CODE:int f,g;
sleep(10);
int xe, ye, color, n, m;
sleep(10);
sleep(10);
win wind=window ("StarConflict 1.0.13.64275", "game_main_window", -1);
sleep(10);
getdisplay(color, xe, ye);
sleep(10);
loop:;
sleep(50);
if (getkeystate(192)==1)Poisk();
goto loop;
function Poisk()
{
getmouse(n, m, wind);
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(n,m,wind);
}; |
|
|
Kibor |
Отправлено: 05 Марта, 2015 - 20:41:01
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
VladosS пишет: Мб так? Можно ли использовать mousemove в активном приложении, при условии DX11?
CODE--
CODE:
int f,g;
sleep(10);
int xe, ye, color, n, m;
sleep(10);
sleep(10);
win wind=window ("StarConflict 1.0.13.64275", "game_main_window", -1);
sleep(10);
getdisplay(color, xe, ye);
sleep(10);
loop:;
sleep(50);
if (getkeystate(192)==1)Poisk();
goto loop;
function Poisk()
{
getmouse(n, m, wind);
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(n,m,wind);
};
прокомментируйте пожалуйста каждою строку вашего кода...
что как вы думаете каждая строка делает...
особенно мне интересно что делают
Цитата: getmouse(n, m, wind);
...............
mousemove(n,m,wind);
каков результат ждется
так же поясните почему в моем примере я привел правильный код как указать область поиска в окне а у вас опять все напутано. |
|
|
VladosS |
Отправлено: 05 Марта, 2015 - 20:52:47
|
Наблюдатель
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2015
Откуда: Россия
Репутация: 0
|
{
getmouse(n, m, wind);//-получаем текущие координаты мыши в окне
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(f, g, wind);//-передвигаем координаты мыши в !точку! окна с координатами
};
Весь смысл: ради производительности ищу объект (квадрат) 3х3 в определенной области экрана, т.е. недалеко от текущего положения мыши) смысл всей программы в донаводке на кружочек упреждения (квадрат в данном случае и есть центр кружка упреждения) при нажатии и удержании клавиши(Отредактировано автором: 05 Марта, 2015 - 20:54:25) |
|
|
Kibor |
Отправлено: 05 Марта, 2015 - 21:02:30
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
VladosS пишет: {
getmouse(n, m, wind);
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(n,m,wind);
};
VladosS пишет: {
getmouse(n, m, wind);//-получаем текущие координаты мыши в окне
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(f, g, wind);//-передвигаем координаты мыши в !точку! окна с координатами
};
ну теперь да.. смысл есть. в первом никуда не двигалась, а тупо туда где считало шло.
потом... надо так
Цитата: mousemove(n-20+f, m-20+g, wind);//-передвигаем координаты мыши в !точку! окна с координатами
смещение относительно старта..
VladosS пишет: finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
потом.... область должна совпадать . надо так
Цитата: finddynamic(0, #f, #g, 0, 0, 0, 0, n-20, m-20, n+20, m+20, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind); |
|
|
VladosS |
Отправлено: 05 Марта, 2015 - 21:23:36
|
Наблюдатель
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2015
Откуда: Россия
Репутация: 0
|
Увеличил тайм-аут до 123мс, толку нет, но теперь глючит не сразу а чуток погодя) и такое чувство, что он не чувствует нажатия клавиши, хотя я сейчас пробую в полноэкранном режиме
(Добавление)
Цитата: int f,g;
sleep(10);
int xe, ye, color, n, m;
sleep(10);
sleep(10);
win wind=window ("StarConflict 1.0.13.64275", "game_main_window", -1);
sleep(10);
getdisplay(color, xe, ye);
sleep(10);
loop:;
sleep(50);
if (getkeystate(17)==1)Poisk();
goto loop;
function Poisk()
{
getmouse(n, m, wind);
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, n-20, m-20, n+20, m+20, wind);
sleep(120);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(n-20+f, m-20+g, wind);
}; |
|
|
|