1 (изменено: imagine, 2010-10-22 10:37:31)

Тема: AHK: пауза и возобновление цикла

Написал вот такой скрипт, состоящий в целом из одного цикла, который запускается по нажатию кнопочки 3:

$3::
Loop
{
PixelGetColor, Color, 400, 400
if Color = 0x00FF00
{
send,{f1}
sleep 200
click 719, 450
 }
else
{
send,{f4}
sleep 1000
}
}

Теперь мне нужно, чтобы каждые 30 секунд етот цикл останавливался, отправлялась клавиша f9, и цикл снова запусался, без вмешательства человека Поискал в гугле немного... вот что получилось:

$3::
SetTimer, imp, 30000
if srun
imp:
{
    srun := false
    sleep 6000
    send,{f9}
    return
}

srun := true
Loop
{

PixelGetColor, Color, 400, 400
if Color = 0x00FF00
{
send,{f1}
sleep 200
click 719, 450
 }
else
{
send,{f4}
sleep 1000
    if not srun
        break
}
}
srun := false
return

Цикл останавливается через 30 секунд, отправляется клавиша f9, но снова цикл не запускается. Я так понял ето из-за первого return. Если его убрать, то цикл запускается вновь, но не включается таймер. И больше цикл не останавливается. В общем нужна помощь профессионалов.

2 (изменено: ayosh, 2010-10-23 13:03:30)

Re: AHK: пауза и возобновление цикла

Не профессионал, но попробуем

$3::
Loop
{
   st := A_TickCount ;можно переместить ниже, чтобы 6 секунд не входили в 30
   If (et >= 30000)
   {
      et = 0
      send, {f9}
      Sleep 6000
   }
   ;st := A_TickCount ;сюда
   PixelGetColor, Color, 400, 400
   if Color = 0x00FF00
   {
      send, {f1}
      sleep 200
      click 719, 450
   }
   else
   {
      send, {f4}
      sleep 1000
   }
   et += A_TickCount-st
}
return

3

Re: AHK: пауза и возобновление цикла

както ниочень ето помогло... тоесть должного еффекта я не наблюдаю

4

Re: AHK: пауза и возобновление цикла

Может, так?

$3::
SetTimer, imp, 30000
Loop
{
    Loop
    {
        PixelGetColor, Color, 400, 400
        if Color = 0x00FF00
        {
            send,{f1}
            sleep 200
            click 719, 450
        }
        else
        {
            send,{f4}
            sleep 1000
            if Stop
                break
        }
    }
    Stop := False
    Send, {F9}
}
Return

imp:
    Stop := True
Return

5

Re: AHK: пауза и возобновление цикла

Ах да, ошибка - в send просто текст, не клавиши отсылались
Наверное поэтому и не было эффекта, исправил:

$3::
Loop
{
   st := A_TickCount ;можно переместить ниже, чтобы 6 секунд не входили в 30
   If (et >= 30000)
   {
      et = 0
      send, {f9}
      Sleep 6000
   }
   ;st := A_TickCount ;сюда
   PixelGetColor, Color, 400, 400
   if Color = 0x00FF00
   {
      send, {f1}
      sleep 200
      click 719, 450
   }
   else
   {
      send, {f4}
      sleep 1000
   }
   et += A_TickCount-st
}
return

6

Re: AHK: пауза и возобновление цикла

спасибо большое, теперь всё раотает как надо
и ещё возник небольшой вопрос, чисто теоретического плана, может ли автохоткей отправлять команды свернутому неактивному окну, и не активировать его при етом?

7

Re: AHK: пауза и возобновление цикла

Может, прочитайте про команды DetectHiddenWindows, DetectHiddenText.

8 (изменено: imagine, 2010-10-27 15:20:15)

Re: AHK: пауза и возобновление цикла

С отправкой команд разобрался... но возник очередной вопрос: можно ли команду PixelGetColor приспособить для определения цвета пикселя в окне свернутого приложения? )

9

Re: AHK: пауза и возобновление цикла

imagine, ради интереса — Вы не пробовали хоть раз воспользоваться поиском?

И не надо лепить все вопросы в одну тему. Эту — закрываю.