<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=9550</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9550&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ».]]></description>
		<lastBuildDate>Wed, 30 Apr 2014 08:48:20 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82479#p82479</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Wed, 30 Apr 2014 08:48:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82479#p82479</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82473#p82473</link>
			<description><![CDATA[<p>Ну так а параметры ком строки могут быть любыми...<br />Не понимаю Вас, зачем спрашивать как лучше и проще сделать, если задача допилить свою не верную идею.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 30 Apr 2014 05:21:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82473#p82473</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82468#p82468</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Wed, 30 Apr 2014 02:28:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82468#p82468</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82439#p82439</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>согласитесь, мало шансов встретить екзешник с таким экзотическим названием</p></blockquote></div><p>Не обязательно так целиком. А вообще в строке есть ***сlose***, или если в Run есть ***Send*** то до Run дело не дойдёт. Так что...</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 29 Apr 2014 18:42:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82439#p82439</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82437#p82437</link>
			<description><![CDATA[<p>Вероятно, других вариантов уже не будет, потому вопрос можно считать решенным.</p>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Tue, 29 Apr 2014 18:00:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82437#p82437</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82436#p82436</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Tue, 29 Apr 2014 17:59:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82436#p82436</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82433#p82433</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 29 Apr 2014 16:48:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82433#p82433</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82432#p82432</link>
			<description><![CDATA[<p>RegExReplace тут очень избыточен, да и зачем параметры заключать в кавычки?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 29 Apr 2014 16:45:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82432#p82432</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82431#p82431</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Tue, 29 Apr 2014 16:02:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82431#p82431</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82415#p82415</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Tue, 29 Apr 2014 10:06:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82415#p82415</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82414#p82414</link>
			<description><![CDATA[<p>Да, поскольку интерпретацию исходного кода &quot;на лету&quot; АНК не поддерживает.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Tue, 29 Apr 2014 09:27:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82414#p82414</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82411#p82411</link>
			<description><![CDATA[<p>Считать всё сразу, сохранить в AHK-файл, запустить его. После запуска файл можно удалить.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 29 Apr 2014 09:19:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82411#p82411</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Построчное считывание и выполнение команд из REG_MULTI_SZ]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82400#p82400</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Mon, 28 Apr 2014 23:54:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82400#p82400</guid>
		</item>
	</channel>
</rss>
