<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Как правильно прервать циклы?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11477&amp;type=atom" />
	<updated>2016-04-23T12:09:03Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11477</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как правильно прервать циклы?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102872#p102872" />
			<content type="html"><![CDATA[<p>Благодарю! Я не говорил, что где-то &quot;не подошло&quot;, а лишь спрашивал Вашего компетентного мнения, чтобы избежать потери времени на поиск, который кто-либо уже осуществлял до меня. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2016-04-23T12:09:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102872#p102872</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как правильно прервать циклы?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102870#p102870" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#z::
	new_i := 0
	
	Label:
	If (new_i = 0)
	{
		Random, rand, 1830000, 1850000
		ToolTip % A_TickCount
		SetTimer, Label, -%rand%
	}
	Return

#x::
	new_i := 1
	SetTimer, Label, Off
	; некоторый код
	Return</code></pre></div><div class="quotebox"><blockquote><p>Подскажите пожалуйста, где можно почитать по русски про таймеры?</p></blockquote></div><p>А <a href="http://www.script-coding.com/AutoHotkey/SetTimer.html">на этом ресурсе</a> чем не подошло? <br />Сначала тут, потом про что за минус перед Period, читаем во встроенной справке, с переводчиком всё довольно понятно.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-04-23T11:56:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102870#p102870</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как правильно прервать циклы?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102867#p102867" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
#z::
new_i := 0
While (new_i = 0)
	{
	Random, rand, 1830000, 1850000
	; некоторый код
	sleep rand
	}
return

#x::
new_i := 1
; некоторый код
return
</code></pre></div><p>Здесь Win+X призван останавливать работу цикла в теле Win+Z, что в принципе и происходит, но Win+Z после этого не реагирует. Подозреваю, что он &quot;Sleep&quot; rand миллисекунд. В этом случае было бы выгоднее поместить этот цикл в другой бесконечный цикл, в котором запоминается время входа в последний, где его условием будет истечение промежутка времени полученного в rand, который так-же можно прервать, присвоив по Win+X значение удовлетворяющее условию, а его содержимое вынести в первый бесконечный цикл, сделав последний лишь ожидающим нужный интервал, или сигнал.<br /></p><div class="codebox"><pre><code>
#z::
var_1 = 0
while (var_1 = 0)
	{
	; некоторый код
	timer_1 := ; получить время работы операционной системы с момента последнего запуска в миллисекундах
	Random, rand, 1830000, 1850000
	var_2 = 0
	timer_2 = timer_1 + %rand%
	while (timer_1 &lt; timer_2 )
		{
		sleep 50
		}
	}
return

#x::
timer_1 := timer_2
; некоторый код
return
</code></pre></div><p>Подскажите пожалуйста, где можно почитать по русски про таймеры?</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2016-04-23T11:38:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102867#p102867</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как правильно прервать циклы?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102301#p102301" />
			<content type="html"><![CDATA[<p><span style="color: green"><strong>Morty Mels</strong>, ознакомьтесь с <a href="http://forum.script-coding.com/viewtopic.php?id=6148">этой</a> темой, отредактируйте заголовок.</span></p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2016-04-05T10:00:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102301#p102301</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как правильно прервать циклы?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102298#p102298" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>SendKey(Key, Pause)
{
	WinGet, active_id, ID, A
	if (true){
		Send, % key
		Sleep Pause
	}else{
		Off := &quot;1&quot;
	}
}
~*CapsLock::
if (GetKeyState(&quot;CapsLock&quot;, &quot;T&quot;)){
	SetTimer, Mirage4, -1
}else{
	Off := &quot;1&quot;
}

Mirage4:
loop {
If Off = 1
Break
	SendKey(&quot;{vk53sc01F down}&quot;,625)
	SendKey(&quot;{vk53sc01F up}&quot;,625)
	SendKey(&quot;{vk57sc011 down}&quot;,625)
	SendKey(&quot;{vk57sc011 up}&quot;,625)
	SendKey(&quot;{vk34sc005 2}&quot;,2500)
	SendKey(&quot;{vk34sc005}&quot;,625)
}
Off := &quot;&quot;
return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Nikva]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27416</uri>
			</author>
			<updated>2016-04-05T09:19:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102298#p102298</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как правильно прервать циклы?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102293#p102293" />
			<content type="html"><![CDATA[<p><strong>ypppu</strong> Применяется она в цикле, но поместить ее внутрь цикла я не могу.</p>]]></content>
			<author>
				<name><![CDATA[Morty Mels]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33766</uri>
			</author>
			<updated>2016-04-05T08:07:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102293#p102293</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как правильно прервать циклы?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102291#p102291" />
			<content type="html"><![CDATA[<p>В описании написано: </p><div class="quotebox"><cite>AutoHotkey Help пишет:</cite><blockquote><p>Valid inside any kind of loop.</p></blockquote></div><p> Команда должна быть помещена внутрь цикла.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2016-04-05T07:49:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102291#p102291</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как правильно прервать циклы?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102289#p102289" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>ypppu пишет:</cite><blockquote><p>Цикл правильно прерывать командой <em>Break</em>. Рекомендую заодно почитать про команду <em>Continue</em>.</p></blockquote></div><p>Не то, что бы я был совсем умственно отсталым, но разве я использовал другой оператор?</p><div class="codebox"><pre><code>SendKey(Key, Pause)
{
	WinGet, active_id, ID, A
	if (true){
		Send, % key
		Sleep Pause
	}else{
		Break Mirage4; Первая ошибка&lt;&lt;&lt;-------------------ТУТ!!!
	}
}
~*CapsLock::

if (GetKeyState(&quot;CapsLock&quot;, &quot;T&quot;)){
	SetTimer, Mirage4, -1
}else{
	Break Mirage4; Вторая ошибка &lt;&lt;&lt;-------------------ТУТ!!!
}

Mirage4:
loop {
	SendKey(&quot;{vk53sc01F down}&quot;,625)
	SendKey(&quot;{vk53sc01F up}&quot;,625)
	SendKey(&quot;{vk57sc011 down}&quot;,625)
	SendKey(&quot;{vk57sc011 up}&quot;,625)
	SendKey(&quot;{vk34sc005 2}&quot;,2500)
	SendKey(&quot;{vk34sc005}&quot;,625)
}
Exit
return</code></pre></div><p>P.S. Покапал в сторону SetTimer и немного переписал скрипт. Сделал его более стабильным и хотя бы немного работающим, но проблемы все равно&nbsp; остались. <a href="http://forum.script-coding.com/viewtopic.php?pid=102290#p102290">http://forum.script-coding.com/viewtopi … 90#p102290</a></p>]]></content>
			<author>
				<name><![CDATA[Morty Mels]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33766</uri>
			</author>
			<updated>2016-04-05T07:00:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102289#p102289</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как правильно прервать циклы?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102288#p102288" />
			<content type="html"><![CDATA[<p>Цикл правильно прерывать командой <em>Break</em>. Рекомендую заодно почитать про команду <em>Continue</em>.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2016-04-05T06:50:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102288#p102288</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Как правильно прервать циклы?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102285#p102285" />
			<content type="html"><![CDATA[<p>При попытке прервать цикл - пишет ошибку... Как исправить?</p><div class="codebox"><pre><code>SendKey(Key, Pause)
{
	WinGet, active_id, ID, A
	if (true){
		Send, % key
		Sleep Pause
	}else{
		Break Mirage4; Первая ошибка
	}
}
~*CapsLock::

if (GetKeyState(&quot;CapsLock&quot;, &quot;T&quot;)){
	SetTimer, Mirage4, -1
}else{
	Break Mirage4; Вторая ошибка
}

Mirage4:
loop {
	SendKey(&quot;{vk53sc01F down}&quot;,625)
	SendKey(&quot;{vk53sc01F up}&quot;,625)
	SendKey(&quot;{vk57sc011 down}&quot;,625)
	SendKey(&quot;{vk57sc011 up}&quot;,625)
	SendKey(&quot;{vk34sc005 2}&quot;,2500)
	SendKey(&quot;{vk34sc005}&quot;,625)
}
Exit
return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Morty Mels]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33766</uri>
			</author>
			<updated>2016-04-05T03:51:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102285#p102285</id>
		</entry>
</feed>
