1 (изменено: Странникх, 2014-04-02 22:56:55)

Тема: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Loop
{
IfWinActive, Name
{
...
}
else IfWinNotActive, Name
{
...
}
}
return
+ открыть спойлер

Довольно простая задача и решение вертится будто на языке, но я хожу около да около мне чувствуется.

Есть данный цикл, когда я переключаюсь на Name нужно ждать секунду, затем должен происходить Loop и все что ниже него. Это должно происходить каждый раз при активации Name окна. Я пробовал варианты с зажатыми клавишами останавливать и включать цикл с помощью переменных или пауз, но не получается.
Последний вариант я пробовал через переменную X, которая включала и выключала бы цикл, но тоже не работает.


x := 0

x = 0
Loop
{
IfWinActive, Name
{
if x = 1
break
...
}
else IfWinNotActive, Name
{
...
x = 1
}
}
return

~!Tab::
{
WinWaitActive, Name
sleep, 1000
x = 0
}
return

Подскажите решение, а то "всю голову сломал".

2

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

#Persistent
settimer, check, 1000
return

check:
If x = 1
{
WinWaitActive, name
{
sleep 1000
...
x=0
}
}
WinWaitNotActive, name
x = 1
return

3

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла


Loop
{
WinWaitActive, name
sleep 1000
Tooltip Активно
WinWaitNotActive, name
Tooltip 
}

Вместо

 Tooltip Активно

написать свои действия.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Если действия повторяются до деактивации.

Loop
{
WinWaitActive, name
sleep 1000
GoSub Label
Tooltip 
}
Label:
IfWinNotActive , name
Return
Tooltip % a_tickcount
Goto Label 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5 (изменено: Странникх, 2014-04-03 16:57:50)

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Loop
{
WinWaitActive, Skype
sleep 1000

IfWinActive, Skype
{
Send 1
sleep, 10
}

IfWinNotActive, Skype
{
WinWaitNotActive, Skype
Tooltip 
}
}
return

Скрипт посылает 1 каждую секунду, а должен с интервалом 10 мс. По сути нужно ждать секунду если Скайп стал активным и потом посылать с интервалом 10 мс цифру 1.

#Persistent


settimer, check, 1000
return

check:
If x = 1
{
WinWaitActive, Skype
{
sleep 1000

x=0

Loop
{
Send 1
sleep, 10
}

}
}
WinWaitNotActive, Skype
x = 1
return

Не знаю почему не работает так.

6 (изменено: serzh82saratov, 2014-04-03 16:54:24)

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

А Я про что.


Loop
{
WinWaitActive, name
sleep 1000
GoSub Label 
}
Label:
IfWinNotActive , name
Return
Send 1
sleep, 10
Goto Label
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Loop
{
WinWaitActive, Skype
sleep 1000
GoSub Label 
}

Label:
IfWinNotActive , Skype
Return

IfWinActive , Skype
Send 1
sleep, 10
Goto Label

Большое спасибо то что нужно.

8

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла




IfWinActive , Skype

Ну зачем же здесь это?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Ну зачем же здесь это?

Я посчитал, что условия не будут выполняться противоположной записи выше если не задать эту команду, поэтому сэкономил время, чтобы не тратить на лишнее редактирование.

10

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Ничего не понял, зачем нужно взаимоисключающее условие?
Если IfWinNotActive вернёт ложь, значит окно активно, зачем делать эту проверку ещё раз?

поэтому сэкономил время, чтобы не тратить на лишнее редактирование.

Это не понятно в двойне.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Я подумал, что IfWinNotActive не вернет ложь.

12

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

А зачем же тогда устанавливать условие, если Вы знаете заранее его итог.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

В том то и дело, что не знал и посчитал, что так более грамотнее будет.

14

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Есть всякие классы, подклассы, винапи и.т.д. Но мы с вами говорим на простом языке анк. Что с картинками до этого, что сейчас, вы не желаете вникнуть в смысл слов (кода), берёте что дают, и наугад вставляете своё. Мне импонирует ваше желание добить желаемое, но пора уже разбирать простейшие алгоритмы (суть), иначе нет диалога, есть перманентные не интересные подсказки...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Я стараюсь вникать, но на форуме я действительно задаю вопросы на которые не знаю ответ (или по-крайней мере не знал). Ведь именно для этого нужен форум или вы думаете прежде чем задать вопрос я не попробую свои решения или поиски в интернете? С картинками я действительно долго, но все же вникал и вник. Я понял абсолютно все, что было там дано и не вижу смысла переделывать тот код на какой-либо другой, ибо это не нужно в моих целях, но вопросы с ними до сих пор остаются, как, например, здесь http://forum.script-coding.com/viewtopic.php?id=9443

16

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

С картинками я действительно долго, но все же вникал и вник. Я понял абсолютно все, что было там дано и не вижу смысла переделывать тот код на какой-либо другой, ибо это не нужно в моих целях, но вопросы с ними до сих пор остаются

Всё же не сами вникли, вы создали тему, получили непонятный ответ, и через почти четыре месяца создали точно такую же тему с высказыванием что в той теме вы ничего непоняли и идёте своим путём в решении алгоритма.

но вопросы с ними до сих пор остаются, как, например, здесь http://forum.script-coding.com/viewtopic.php?id=9443

Ссылки оформляются спец. тэгом.
Этот вопрос совсем не касается алгоритма показа картинок.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

17

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Кстати, можете полностью прокомментировать код из 7 поста?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

18

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Loop ; цикл
{
WinWaitActive, Skype ; если активировано окно скайп
sleep 1000 ; то ждать секунду
GoSub Label ; и перейти к метке Label
}

Label: ; метка к которой идет переход
IfWinNotActive , Skype ;если не активно окно скайп
Return ; то возврат

IfWinActive , Skype ;если активно окно скайп
Send 1 ; то посылать 1
sleep, 10 ; выполнять 10 мс
Goto Label ; перейти к метке Label (также каждые 10 мс)

19

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Можно чуть упростить:

Loop {
   WinWaitActive, Skype
   sleep 1000
   while WinActive("Skype") {
      Send 1
      sleep, 10
   }
}

20

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Да легко, но я подумал что в такой форме будет нагляднее. Ну и while многие новички не знают, из за "паутины" в проекте перевода.


IfWinNotActive , Skype ;если не активно окно скайп
Return ; то возврат

IfWinActive, Skype ;если активно окно скайп

Строка с IfWinActive выполнится только если окно активно, IfWinActive здесь всегда вернёт правду, то бишь он тут не нужен, потому как окно ведь может быть только либо активно либо нет. Если окно не активно, то до строки IfWinActive дело не дойдёт.
Даже не знаю как ещё объяснить.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

21

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

While не одно и тоже с If ?

22

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

serzh82saratov, пожалуй, тут правда ваша на 100% ))

Странникх, нет. Оператор while выполняет оператор или блок операторов, пока определенное выражение не примет значение ложь. То есть его можно рассматривать как loop с неизвестным заранее числом итераций (повторений).

23

Re: AHK: Каждый раз ожидать при активации окна или вкл\выкл цикла

Проще говоря while это цикл с условием выхода в начале.


Loop
{
if !expression
    break
msgbox % a_index
}
msgbox цикл закончен
return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui