<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9550&amp;type=atom" />
	<updated>2014-04-30T08:48:20Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9550</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82479#p82479" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>задача допилить свою не верную идею.</p></blockquote></div><p>Такой задачи нет, просто один из вариантов ... <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2014-04-30T08:48:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82479#p82479</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82473#p82473" />
			<content type="html"><![CDATA[<p>Ну так а параметры ком строки могут быть любыми...<br />Не понимаю Вас, зачем спрашивать как лучше и проще сделать, если задача допилить свою не верную идею.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-30T05:21:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82473#p82473</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82468#p82468" />
			<content type="html"><![CDATA[<p>Да, об этом я не подумал ...</p><p>Тогда можно записывать в реестр команды в виде</p><div class="codebox"><pre><code>Run: &quot;calc.exe&quot;</code></pre></div><p>и заменить строки кода</p><div class="codebox"><pre><code>if InStr(A_LoopField, &quot;Run: &quot;&quot;&quot;)</code></pre></div><p>или просто заменить строки кода</p><div class="codebox"><pre><code>if InStr(A_LoopField, &quot;Run &quot;&quot;&quot;)</code></pre></div><p>шансы получить неверный ответ сводятся к 0 ....</p>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2014-04-30T02:28:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82468#p82468</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82439#p82439" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>согласитесь, мало шансов встретить екзешник с таким экзотическим названием</p></blockquote></div><p>Не обязательно так целиком. А вообще в строке есть ***сlose***, или если в Run есть ***Send*** то до Run дело не дойдёт. Так что...</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-29T18:42:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82439#p82439</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82437#p82437" />
			<content type="html"><![CDATA[<p>Вероятно, других вариантов уже не будет, потому вопрос можно считать решенным.</p>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2014-04-29T18:00:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82437#p82437</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82436#p82436" />
			<content type="html"><![CDATA[<p>Спасибо, <strong>serzh82saratov</strong>! Тоже хороший, рабочий вариант.</p><p>По поводу запуска<br /></p><div class="codebox"><pre><code>Run &quot;Close.exe&quot;</code></pre></div><p>согласитесь, мало шансов встретить екзешник с таким экзотическим названием. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Ну а двойные кавычки - это, как вариант. Конечно можно использовать и другие разделители. Например разделитель = будет более уместен ...</p><p>Благодарю за ответ!</p>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2014-04-29T17:59:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82436#p82436</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82433#p82433" />
			<content type="html"><![CDATA[<p>Да и вообще при чтении такой строки:<br /></p><div class="codebox"><pre><code>Run &quot;Close.exe&quot;</code></pre></div><p>будет выполнено:<br /></p><div class="codebox"><pre><code>Process, Close, Close.exe</code></pre></div><p>Тут нас должен интересовать только первый пробел, ну или другой разделитель, например &quot;=&quot;.</p><div class="codebox"><pre><code>
RegRead, Command, HKLM, SYSTEM\CurrentControlSet\Services\Test\Commands, Test
{
    Loop, parse, Command, `n
    {
        com := SubStr(LoopField, 1, p:=InStr(str, &quot; &quot;)-1)
        param := SubStr(LoopField, p+2)
        if com = Close  
            Process, Close, % param
        else if com = Send 
            Send, % &quot;{&quot; param &quot;}&quot;
***
</code></pre></div><p>Ну а если уже кавычек понаделали, то:</p><div class="codebox"><pre><code>param := SubStr(str, p+3, -1)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-29T16:48:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82433#p82433</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82432#p82432" />
			<content type="html"><![CDATA[<p>RegExReplace тут очень избыточен, да и зачем параметры заключать в кавычки?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-29T16:45:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82432#p82432</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82431#p82431" />
			<content type="html"><![CDATA[<p>Благодаря <strong>teadrinker&#039;у</strong> и его универсальному шаблону, который выбирает все содержимое между двойными кавычками &quot;&nbsp; &nbsp;&quot; , нашел оптимальное решение.</p><p>Пример команд, содержащихся в REG_MULTI_SZ:</p><div class="codebox"><pre><code>Run &quot;calc.exe&quot;
Sleep &quot;2000&quot;
Run &quot;notepad.exe&quot;
Sleep &quot;2000&quot;
Close &quot;calc.exe&quot;
Send &quot;vkADsc100&quot;</code></pre></div><p>Все выполняемые параметры команд должны быть заключены в двойные кавычки &quot;&nbsp; &nbsp;&quot;.</p><p>Теперь рабочий кусок кода AHK скрипта, если вдруг кому-то понадобится:</p><div class="codebox"><pre><code>RegRead, Command, HKLM, SYSTEM\CurrentControlSet\Services\Test\Commands, Test
    {
    Loop, parse, Command, `n
        {
        if InStr(A_LoopField, &quot;Close&quot;)
            {
            Process, Close, % RegExReplace(A_LoopField, &quot;m`a).*?&quot;&quot;(.*)?&quot;&quot;.*&quot;, &quot;$1&quot;) ; Завершение работы какой-либо программы (процесса)
            }
        else if InStr(A_LoopField, &quot;Send&quot;)
            {
            Send, % RegExReplace(A_LoopField, &quot;m`a).*?&quot;&quot;(.*)?&quot;&quot;.*&quot;, &quot;{$1}&quot;) ; Эмуляция нажатия клавиши
            }
        else if InStr(A_LoopField, &quot;Run&quot;)
            {
            Run, % RegExReplace(A_LoopField, &quot;m`a).*?&quot;&quot;(.*)?&quot;&quot;.*&quot;, &quot;&quot;&quot;$1&quot;&quot;&quot;) ; Выполнение команды на запуск какой-либо программы
            }
        else if InStr(A_LoopField, &quot;Sleep&quot;)
            {
            Sleep, % RegExReplace(A_LoopField, &quot;m`a).*?&quot;&quot;(.*)?&quot;&quot;.*&quot;, &quot;$1&quot;) ; Пауза
            }
        }
    }</code></pre></div><p>Собсна, по такому-же принципу можно считывать команды и из INI-файлов.</p><p>Если есть другие, более лучшие варианты для решения этого вопроса, напишите код.</p>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2014-04-29T16:02:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82431#p82431</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82415#p82415" />
			<content type="html"><![CDATA[<p>Благодарю за ответы!</p><p>Значит, как говорил плешивый вождь краснож...ых &quot;Правильной дорогой идете, товарисЧи!&quot; <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Про TempFile.ahk я тоже думал, но этот метод не совсем тот ... - полагаю, более медленный из-за формирования файла. К тому-же, эти команды многократного исполнения ( очень многократного ) ...</p><p>Благодарю за помощь!</p>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2014-04-29T10:06:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82415#p82415</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82414#p82414" />
			<content type="html"><![CDATA[<p>Да, поскольку интерпретацию исходного кода &quot;на лету&quot; АНК не поддерживает.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2014-04-29T09:27:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82414#p82414</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82411#p82411" />
			<content type="html"><![CDATA[<p>Считать всё сразу, сохранить в AHK-файл, запустить его. После запуска файл можно удалить.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2014-04-29T09:19:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82411#p82411</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82400#p82400" />
			<content type="html"><![CDATA[<p>Добрый день всем, уважаемые!</p><p>Попытаюсь кратко сформулировать суть вопроса:<br />Имеется скрипт, который должен построчно считывать команды на исполнение из параметра реестра REG_MULTI_SZ ( многострочный ), например с таким содержанием:</p><div class="codebox"><pre><code>Run &quot;calc.exe&quot;
Sleep 2000
Run &quot;notepad.exe&quot;
Sleep 2000
MsgBox, Any text</code></pre></div><p>Команды могут быть различные, это не важно.</p><p>Я пошел по такой схеме:</p><div class="codebox"><pre><code>RegRead, Command, HKLM, SYSTEM\CurrentControlSet\Services\Test\Commands, Test
    {
    Loop, parse, Command, `n
        {
        if InStr(A_LoopField, &quot;Run&quot;)
            {
            RegExMatch(A_LoopField, &quot;&quot;&quot;.*&quot;&quot;&quot;, Command)
            Run % Command
            }
        else if InStr(A_LoopField, &quot;Sleep&quot;)
            {
            RegExMatch(A_LoopField, &quot;\d+$&quot;, Command)
            Sleep % Command
            }
        }
    }
.... и так далее</code></pre></div><p>Есть ли более прострой или более правильный способ заставить скрипт построчно считывать и исполнять команды из REG_MULTI_SZ или, например, из INI-файла и возможно ли еще добавить сюда условия If ... и т.п. ?</p><p>Заранее благодарю всех за помощь!</p>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2014-04-28T23:54:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82400#p82400</id>
		</entry>
</feed>
