Доброго времени суток форумчанам. Давно слежу за разработкой кибор, но все никак не было нужды воспользоваться, сейчас появилось свободное время, и задача, которую, мне кажется, может решить кибор. Простите за лирику.
Суть вопроса, можно ли с помощью данной среды сделать дубликатор, то есть из условного окна 1 передавать движения мыши, клики и нажатия клавиш в окно 2,3 и 4. На самом деле скорее даже только окно 2.
Необходимо для старой игры, в теории защиты там никакой, но поскольку игра старая, то и функционала в ней многого, свойственного современным играм, - нет. По сути необходимо что бы персонаж во втором окне полностью повторял движения за окном первым, осложняется тем, что игра от первого лица.
Еще раз повторюсь, можно ли реализовать дублирование всех действий "на лету" из окна 1 в окно 2,3,4 ?
____________
Если не там тему повесил, или некорректный вопрос, заранее извиняюсь.
1. fedor48 - 15 Апреля, 2020 - 18:20:26 - перейти к сообщению
2. Kibor - 16 Апреля, 2020 - 05:06:21 - перейти к сообщению
Можно.
Записал видео
Скрипт
Записал видео
Скрипт
CODE:
win w1=window (-1, "Afx:00000000FF270000:8", window ("Áåçûìÿííûé - Paint", "MSPaintApp", 2, 0, -1, -1, -1));
win w2=window (-1, "Afx:00000000FF270000:8", window ("Áåçûìÿííûé - Paint", "MSPaintApp", 785, 297, -1, -1, -1));
int K=0, X, Y;
enabletimer(0);
loop()
{
if (getkeystate(1)==1)
{
K=1;
while(getkeystate(1)==1)sleep(1);
K=2;
while(K==2)sleep(1);
}
sleep(1);
}
CREATE_TIMER(0, 5)
{
getmouse(X, Y);
X=X-w1.leftclient;
Y=Y-w1.topclient;
if (K==0)sendmousemove(X, Y, w2);
if (K==1)sendmousedown(LEFT, X, Y, w2);
if (K==2){sendmouseup(LEFT, X, Y, w2); K=0;}
}
win w2=window (-1, "Afx:00000000FF270000:8", window ("Áåçûìÿííûé - Paint", "MSPaintApp", 785, 297, -1, -1, -1));
int K=0, X, Y;
enabletimer(0);
loop()
{
if (getkeystate(1)==1)
{
K=1;
while(getkeystate(1)==1)sleep(1);
K=2;
while(K==2)sleep(1);
}
sleep(1);
}
CREATE_TIMER(0, 5)
{
getmouse(X, Y);
X=X-w1.leftclient;
Y=Y-w1.topclient;
if (K==0)sendmousemove(X, Y, w2);
if (K==1)sendmousedown(LEFT, X, Y, w2);
if (K==2){sendmouseup(LEFT, X, Y, w2); K=0;}
}
3. fedor48 - 16 Апреля, 2020 - 08:36:32 - перейти к сообщению
Большое спасибо! Очень интересно, и главное понятно, буду пробовать и расширять функционал.
4. fedor48 - 16 Апреля, 2020 - 13:00:51 - перейти к сообщению
А может быть что sendkey работает, а sendmouse нет?
5. Zireael - 16 Апреля, 2020 - 13:10:22 - перейти к сообщению
Цитата:
А может быть что sendkey работает, а sendmouse нет?
Может, зависит от приложения.
6. Arimor - 22 Сентября, 2020 - 04:48:33 - перейти к сообщению
А как сделать чтобы дублирование действий было с рандомным движением курсора до конечной точки? Без работы в фоновом режиме?
7. Zireael - 22 Сентября, 2020 - 05:04:02 - перейти к сообщению
Цитата:
Без работы в фоновом режиме?
Никак. У винды один курсор.
8. Arimor - 22 Сентября, 2020 - 07:14:58 - перейти к сообщению
Zireael пишет:
Цитата:
Без работы в фоновом режиме?
Никак. У винды один курсор.
А если по очереди делать повтор? Это наверное уже будет очень сложно сделать? Как я понимаю, нужно где то записывать действия а так же команды на начало и конец записи. Я же в правильном направлении думаю или есть проще решения?
Как рандом делать разобрался. А вот дальше пока сложно.
CODE:
win w1=window (-1, "Afx:00000000FF270000:8", window ("Áåçûìÿííûé - Paint", "MSPaintApp", 2, 0, -1, -1, -1));
win w2=window (-1, "Afx:00000000FF270000:8", window ("Áåçûìÿííûé - Paint", "MSPaintApp", 785, 297, -1, -1, -1));
int K=0, X, Y;
enablerealmouse(10, 15, 10, 10);
enabletimer(0);
loop()
{
if (getkeystate(1)==1)
{
K=1;
while(getkeystate(1)==1)sleep(1);
K=2;
while(K==2)sleep(1);
}
sleep(1);
}
CREATE_TIMER(0, 5)
{
getmouse(X, Y);
X=X-w1.leftclient;
Y=Y-w1.topclient;
if (K==0)mousemove(X, Y, w2);
if (K==1)mousedown(LEFT, X, Y, w2);
if (K==2){mouseup(LEFT, X, Y, w2); K=0;}
}
win w1=window (-1, "Afx:00000000FF270000:8", window ("Áåçûìÿííûé - Paint", "MSPaintApp", 2, 0, -1, -1, -1));
win w2=window (-1, "Afx:00000000FF270000:8", window ("Áåçûìÿííûé - Paint", "MSPaintApp", 785, 297, -1, -1, -1));
int K=0, X, Y;
enablerealmouse(10, 15, 10, 10);
enabletimer(0);
loop()
{
if (getkeystate(1)==1)
{
K=1;
while(getkeystate(1)==1)sleep(1);
K=2;
while(K==2)sleep(1);
}
sleep(1);
}
CREATE_TIMER(0, 5)
{
getmouse(X, Y);
X=X-w1.leftclient;
Y=Y-w1.topclient;
if (K==0)mousemove(X, Y, w2);
if (K==1)mousedown(LEFT, X, Y, w2);
if (K==2){mouseup(LEFT, X, Y, w2); K=0;}
}
9. Azdiev - 05 Декабря, 2020 - 14:36:31 - перейти к сообщению
Kibor , как с вами связаться?
10. konctantin777 - 06 Декабря, 2020 - 21:51:04 - перейти к сообщению
Хмм.. а как отследить прокрутку колёсика ? + а если следить за кнопками, то можно ли не следить за каждой клавишой, а смотреть что нажата- отжата и какая ?