Paskuda |
Отправлено: 20 Марта, 2021 - 09:17:41
|
Участник
Покинул форум
Сообщений всего: 61
Дата рег-ции: Янв. 2021
Репутация: 0
|
Kibor пишет: Выполнить этот код скопировав в буфер сначала текст приведенный. И четко описать что получается. Ничего не происходит, скрипт просто выполняется без ошибок.
Zireael пишет: Может не срабатывает Ctrl+C и readclipboard вообще не причём. Это же легко проверить. Ваш скрипт работает. А вот мой скрипт для проверки Ctrl+C и 2 результата отладки, с messagebox() и без, посмотрите пожалуйста то что выделено жирным.
CODE:
int x=30;
win win_game=window ("MGCloud", "PlaykeyContainerClass", -1);
string old_name="";
activate(win_game);pause(1000);
sendlanguage("00000419",win_game);
for(int i=0; i<2; i++)
{
mousemove(x, 305);pause(500);
keydown(SHIFT);pause(500)
mouse(LEFT);pause(500);
keyup(SHIFT);pause(500);
mousemove(1025, 250);pause(500);
mousedbl(LEFT);pause(500);
keydown(CONTROL);pause(500);
key(67);pause(500);
keyup(CONTROL);pause(500);
key(ESCAPE);pause(500);
string new_name="";
int r;
r=readclipboard(new_name);
if(r==-1)messagebox("ошибка r");
messagebox("Бла бла"); //Эту часть убираем во 2 варианте
pause(2000); //
activate(win_game);pause(1000); //
if(new_name==old_name)messagebox("ошибка переменной");
else{old_name=new_name;x=x+40;}
}
int x = 30
win win_game = window ( " MGCloud " , " PlaykeyContainerClass " , - 1 )
string old_name = " "
activate ( win_game )
pause ( 1000 )
sendlanguage ( " 00000419 " , win_game )
for ( int i = 0 ; i'-842150451' < 2 ; i'-842150451' ++ )
mousemove ( x'30' , 305 )
pause ( 500 )
keydown ( SHIFT )
pause ( 500 ) mouse ( LEFT )
pause ( 500 )
keyup ( SHIFT )
pause ( 500 )
mousemove ( 1025 , 250 )
pause ( 500 )
mousedbl ( LEFT )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 67 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
key ( ESCAPE )
pause ( 500 )
string new_name = " "
r = readclipboard ( new_name'' )
if ( r'1' == - 1 )
messagebox ( " Бла бла " )
pause ( 2000 )
activate ( win_game )
pause ( 1000 )
if ( new_name'Имя 1' == old_name'' )
old_name = new_name'Имя 1'
x = x'30' + 40
mousemove ( x'70' , 305 )
pause ( 500 )
keydown ( SHIFT )
pause ( 500 ) mouse ( LEFT )
pause ( 500 )
keyup ( SHIFT )
pause ( 500 )
mousemove ( 1025 , 250 )
pause ( 500 )
mousedbl ( LEFT )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 67 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
key ( ESCAPE )
pause ( 500 )
string new_name = " "
r = readclipboard ( new_name'' )
if ( r'1' == - 1 )
messagebox ( " Бла бла " )
pause ( 2000 )
activate ( win_game )
pause ( 1000 )
if ( new_name'Имя 2' == old_name'Имя 1' )
old_name = new_name'Имя 2'
x = x'70' + 40
int x = 30
win win_game = window ( " MGCloud " , " PlaykeyContainerClass " , - 1 )
string old_name = " "
activate ( win_game )
pause ( 1000 )
sendlanguage ( " 00000419 " , win_game )
for ( int i = 0 ; i'-842150451' < 2 ; i'-842150451' ++ )
mousemove ( x'30' , 305 )
pause ( 500 )
keydown ( SHIFT )
pause ( 500 ) mouse ( LEFT )
pause ( 500 )
keyup ( SHIFT )
pause ( 500 )
mousemove ( 1025 , 250 )
pause ( 500 )
mousedbl ( LEFT )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 67 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
key ( ESCAPE )
pause ( 500 )
string new_name = " "
r = readclipboard ( new_name'' )
if ( r'1' == - 1 )
if ( new_name'Имя 1' == old_name'' )
old_name = new_name'Имя 1'
x = x'30' + 40
mousemove ( x'70' , 305 )
pause ( 500 )
keydown ( SHIFT )
pause ( 500 ) mouse ( LEFT )
pause ( 500 )
keyup ( SHIFT )
pause ( 500 )
mousemove ( 1025 , 250 )
pause ( 500 )
mousedbl ( LEFT )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 67 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
key ( ESCAPE )
pause ( 500 )
string new_name = " "
r = readclipboard ( new_name'' )
if ( r'1' == - 1 )
if ( new_name'Имя 1' == old_name'Имя 1' )
messagebox ( " ошибка переменной " ) |
|
|
Kibor |
Отправлено: 20 Марта, 2021 - 10:22:49
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Изначально был вопрос
Paskuda пишет: 2) Не записывается текст из буфера обмена в переменную, решил посмотреть что же там происходит и о чудо все записалось, убрал мессаджи опять перестало работать
который протестировали.
Если этот код в цикле нормально работает
CODE:string name;
int r;
loop()
{
writeclipboard("то что в буфере");
r=readclipboard(name);
if(r==-1)messagebox("ошибка r");
if(name!="то что в буфере")messagebox("ошибка переменной");
writeclipboard("другое");
r=readclipboard(name);
if(r==-1)messagebox("ошибка r");
if(name!="другое")messagebox("ошибка переменной");
}
то с readclipboard writeclipboard все ок.
Если не срабатывают в игре комбинации, то проблема в чем то другом. |
|
|
Paskuda |
Отправлено: 20 Марта, 2021 - 10:41:42
|
Участник
Покинул форум
Сообщений всего: 61
Дата рег-ции: Янв. 2021
Репутация: 0
|
Zireael пишет: Надо искать причину почему не срабатывает Ctrl+C.
Если в блокноте этот код работает, значит проблема в приложении.
Kibor пишет: то с readclipboard writeclipboard все ок.
Если не срабатывают в игре комбинации, то проблема в чем то другом.
Меня больше интересует почему он начинает срабатывать если вызвать messagebox(), сначала думал что не срабатывает keyup ( CONTROL ), а messagebox() дезактивируя окно ее принудительно отжимает, но readclipboard () стоит между keyup ( CONTROL ) и messagebox () так что к тому моменту текст из буфера уже должен быть записан. Потом думал что дело в задержке поставил вместо messagebox() pause(5000), но это не помогло. |
|
|
Paskuda |
Отправлено: 20 Марта, 2021 - 11:23:09
|
Участник
Покинул форум
Сообщений всего: 61
Дата рег-ции: Янв. 2021
Репутация: 0
|
Zireael пишет: readclipboard тут явно не причём. Текст вообще копируется в буфер? Если скрипт выполнит Ctrl+C несколько раз, то скопированный текст будет в буфере? Вставить его куда-то можно? Скорее всего нет, ищите причину почему не срабатывает Ctrl+C в этом приложении. Вот пожалуйста, дописал в свой скрипт, копирует из чата и тут же вставляет обратно в чат то-же самое, но в переменную записывается только 1 раз, а во 2 цикле ее значение уже не меняется:
CODE:
int x=30;
win win_game=window ("MGCloud", "PlaykeyContainerClass", -1);
string
old_name="";
activate(win_game);pause(1000);
sendlanguage("00000419",win_game);
for(int i=0; i<2; i++)
{
mousemove(x, 305);pause(1000);
keydown(SHIFT);pause(500)
mouse(LEFT, x, 305);pause(500);
keyup(SHIFT);pause(500);
mousemove(1025, 250);pause(500);
mousedbl(LEFT);pause(500);
keydown(CONTROL);pause(500);
key(67);pause(500);
keyup(CONTROL);pause(500);
keydown(CONTROL);pause(500);
key(86);pause(500); //Вставляем
keyup(CONTROL);pause(500);
key(ESCAPE);pause(500);
string new_name="";
int r;
r=readclipboard(new_name);
if(r==-1)messagebox("ошибка r");
//messagebox("Бла бла");
//pause(2000);
//activate(win_game);pause(1000);
if(new_name==old_name)messagebox("ошибка переменной");
else{old_name=new_name;x=x+40;}
}
int x = 30
win win_game = window ( " MGCloud " , " PlaykeyContainerClass " , - 1 )
string old_name = " "
activate ( win_game )
pause ( 1000 )
sendlanguage ( " 00000419 " , win_game )
for ( int i = 0 ; i'-842150451' < 2 ; i'-842150451' ++ )
mousemove ( x'30' , 305 )
pause ( 1000 )
keydown ( SHIFT )
pause ( 500 ) mouse ( LEFT , x'30' , 305 )
pause ( 500 )
keyup ( SHIFT )
pause ( 500 )
mousemove ( 1025 , 250 )
pause ( 500 )
mousedbl ( LEFT )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 67 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 86 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
key ( ESCAPE )
pause ( 500 )
string new_name = " "
r = readclipboard ( new_name'' )
if ( r'1' == - 1 )
if ( new_name'Имя 1' == old_name'' )
old_name = new_name'Имя 1'
x = x'30' + 40
mousemove ( x'70' , 305 )
pause ( 1000 )
keydown ( SHIFT )
pause ( 500 ) mouse ( LEFT , x'70' , 305 )
pause ( 500 )
keyup ( SHIFT )
pause ( 500 )
mousemove ( 1025 , 250 )
pause ( 500 )
mousedbl ( LEFT )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 67 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 86 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
key ( ESCAPE )
pause ( 500 )
string new_name = " "
r = readclipboard ( new_name'' )
if ( r'1' == - 1 )
if ( new_name'Имя 1' == old_name'Имя 1' )
messagebox ( " ошибка переменной " )
т.е. комбинации срабатывают, не работает именно readclipboard(). |
|
|
Paskuda |
Отправлено: 20 Марта, 2021 - 12:00:06
|
Участник
Покинул форум
Сообщений всего: 61
Дата рег-ции: Янв. 2021
Репутация: 0
|
Kibor пишет: В блокноте это проверьте.
В блокноте работает, но я ж не в блокнот играю
Вместо переменной сделал массив имен, чтобы каждый раз записывалось в новую ячейку, но как видим readclipboard() всегда записывает то что было скопировано первый раз:
CODE:
int x=30;
win win_game=window ("MGCloud", "PlaykeyContainerClass", -1);
string
name[2];
activate(win_game);pause(1000);
sendlanguage("00000419",win_game);
for(int i=0; i<2; i++)
{
mousemove(x, 305);pause(1000);
keydown(SHIFT);pause(500)
mouse(LEFT, x, 305);pause(500);
keyup(SHIFT);pause(500);
mousemove(1025, 250);pause(500);
mousedbl(LEFT);pause(500);
keydown(CONTROL);pause(500);
key(67);pause(500);
keyup(CONTROL);pause(500);
mouse(LEFT);pause(500);
keydown(CONTROL);pause(500);
key(86);pause(500); //Вставляем
keyup(CONTROL);pause(500);
key(ESCAPE);pause(500);
int r;
r=readclipboard(name[i]);
if(r==-1)messagebox("ошибка r");
if(name[1]==name[0])messagebox("ошибка переменной");
x=x+40;
}
messagebox(name[0]);
messagebox(name[1]);
int x = 30
win win_game = window ( " MGCloud " , " PlaykeyContainerClass " , - 1 )
activate ( win_game )
pause ( 1000 )
sendlanguage ( " 00000419 " , win_game )
for ( int i = 0 ; i'-842150451' < 2 ; i'-842150451' ++ )
mousemove ( x'30' , 305 )
pause ( 1000 )
keydown ( SHIFT )
pause ( 500 ) mouse ( LEFT , x'30' , 305 )
pause ( 500 )
keyup ( SHIFT )
pause ( 500 )
mousemove ( 1025 , 250 )
pause ( 500 )
mousedbl ( LEFT )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 67 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
mouse ( LEFT )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 86 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
key ( ESCAPE )
pause ( 500 )
r = readclipboard ( name'' [ i'0' ] )
if ( r'1' == - 1 )
if ( name'' [ 1 ] == name'Имя_1' [ 0 ] )
x = x'30' + 40
mousemove ( x'70' , 305 )
pause ( 1000 )
keydown ( SHIFT )
pause ( 500 ) mouse ( LEFT , x'70' , 305 )
pause ( 500 )
keyup ( SHIFT )
pause ( 500 )
mousemove ( 1025 , 250 )
pause ( 500 )
mousedbl ( LEFT )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 67 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
mouse ( LEFT )
pause ( 500 )
keydown ( CONTROL )
pause ( 500 )
key ( 86 )
pause ( 500 )
keyup ( CONTROL )
pause ( 500 )
key ( ESCAPE )
pause ( 500 )
r = readclipboard ( name'' [ i'1' ] )
if ( r'1' == - 1 )
if ( name'Имя_1' [ 1 ] == name'Имя_1' [ 0 ] )
messagebox ( " ошибка переменной " )
x = x'70' + 40
messagebox ( name'Имя_1' [ 0 ] )
messagebox ( name'Имя_1' [ 1 ] )(Отредактировано автором: 20 Марта, 2021 - 12:00:58) |
|
|
Paskuda |
Отправлено: 20 Марта, 2021 - 13:32:24
|
Участник
Покинул форум
Сообщений всего: 61
Дата рег-ции: Янв. 2021
Репутация: 0
|
Kibor пишет: Почему в игре не работает, а не почему на работает readclipboard и тд.
А этого никто не знает.
Заменил messagebox() перед каждым циклом на комбинацию:
enabledeactive();
disabledeactive();
activate();
Переактивирую окно игры, в этом случае readclipboard работает, может это наведет Вас на какие то мысли, пока так оставил но это ппц коряво и тратит кучу времени.(Отредактировано автором: 20 Марта, 2021 - 13:32:56) |
|
|
|