В скрипте "Ожидание изображения на экране и пограммное нажатие клавиатуры."
в первом открытом окне блокнота копия окна калькулятора не показывалась. Только во втором и далее. Уменьшил время ожидания с 1 сек на 50мс, стало работать нормально.
(Добавление)
[quote=Kibor]
barok2 пишет:
в for надо 3 параметра. это правила синтаксиса.
в си вроде в for можно все 3 параметра опустить.
(Добавление)
Kibor пишет:
Вроде если 2 параметр true, то цикл повторяется.
(Добавление)
CODE://int Image_0[23][15];//Масив для хранения расунка 52 загруженного с файла в память
int PosX_0[1], PosY_0[1];//Сюда поместятся координаты найденного рисунка на экране. В нашем
int Image_0[11][15];loadimage (#Image_0[0][0], "D:\Games\Kibor\bas\Скрипты\Ожидание\Image_0.bmp");
int color, xe, ye;
//getdisplay(color, xe, ye);//Узнать разрешение экрана
//сканируем экран и ждем появления на нем загруженного изображения. в нашем случае числа 52
//n: if (findimage(1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, xe, ye, -1)==0)
//{
//sleep(50);//ждем 50 мсек. для снижения нагрузки процессора
//goto n;//идем назад на проверку наличия изображения на экране
//} //? из блока переход....
for(getdisplay(color, xe, ye); findimage(1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, xe, ye, -1)==0; sleep(50)){};
//когда изображение появилось запускаем блокнот
start("C:\Windows\System32\notepad.exe");
//win not;
//e: not=window ("Безымянный - Блокнот", "Notepad", -1);//Указательна на окно Блокнот
//if (not==0)//Если указатель не получен еще. блокнот не успел запуститься......
//{sleep(50);goto e;}
for (win not; (not=window ("Безымянный - Блокнот", "Notepad", -1))==0; sleep(50));{};
win cal=window ("Калькулятор", "CalcFrame", -1);//Указатель на калькулятор
activate(cal);//передать фокус на калькулятор
sleep(50);// ждать пол секунды
//копировать значение с калькулятора в буфер обмена с помощью грячих клавиш CTRL C
keydown(CONTROL);keydown('c');//нажать CTRL C
sleep(50);
keyup('c');keyup(CONTROL);//отпустить CTRL C
activate(not);//передать фокус на блокнот
sleep(50);// ждать секунду
//вставить с буфера обмена в блокнот нажав CTRL V
keydown(CONTROL);keydown('v');//нажать CTRL V
sleep(50);
keyup('v');keyup(CONTROL);//отпустить CTRL V
(Добавление)
Нет, я хотел сказать не опустить параметры, а использовать иначе, не так как обычно. 1 параметр выполняется первым. Затем второй параметр-условие выполнения цикла. И третий параметр-выполняется третим. Второй и третий выполняются каждый цикл. первый-только раз.
(Добавление)
Это код вашего рабочего примера. С изменением на цикл for (без goto). Тоже работает.