<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Выполнение команды Run из переменной в файле txt или ini]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=13263</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=13263&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Выполнение команды Run из переменной в файле txt или ini».]]></description>
		<lastBuildDate>Sun, 03 Dec 2017 19:57:05 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Выполнение команды Run из переменной в файле txt или ini]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=121927#p121927</link>
			<description><![CDATA[<p>Написал еще одну функцию конвертирования виндовых переменных в формат AHK с учетом архитектуры OS.</p><p>Вроде работает. Может кому-нить пригодится:</p><div class="codebox"><pre><code>

Prm1 := &quot;%SystemDrive%&quot;
Prm2 := &quot;%ProgramFiles%&quot;
Prm3 := &quot;%ProgramFiles(x86)%&quot;
Prm4 := &quot;&quot;&quot;Бубль Гум&quot;&quot;&quot;

MsgBox % &quot;Виндовая переменная &quot;&quot;%SystemDrive%&quot;&quot;:`n&quot;ReplVar(Prm1)
MsgBox % &quot;Выхлоп AHK переменной &quot;&quot;ProgramFiles&quot;&quot; без учета архитектуры OS:`n&quot; ProgramFiles
		. &quot;`n`nУчитывая архитектуру OS:`n&quot; ReplVar(Prm2)
		. &quot;`n`nчто соответствует переменной Windows &quot;&quot;%ProgramFiles%&quot;&quot; любой архитектуры&quot;
MsgBox % &quot;Виндовая переменная &quot;&quot;%ProgramFiles(x86)%&quot;&quot;:`n&quot; ReplVar(Prm3)
MsgBox % Prm4 &quot;`n`n&quot; ReplVar(Prm4)

ReplVar(Prm) {
	EnvGet SystemDrive, SystemDrive
	EnvGet ProgramFiles64, ProgramW6432
	EnvGet ProgramFiles86, ProgramFiles(x86)
	
If InStr(Prm, &quot;%SystemDrive%&quot;) {
	Prm := RegExReplace(Prm, &quot;%(.*)%&quot;, SystemDrive)
	}
If InStr(Prm, &quot;%ProgramFiles%&quot;) {
	If (GetOSarch() = &quot;x64&quot;) {
		Prm := RegExReplace(Prm, &quot;%(.*)%&quot;, ProgramFiles64)
		}
		Else {
			Prm := RegExReplace(Prm, &quot;%(.*)%&quot;, ProgramFiles)
			}
	}
If InStr(Prm, &quot;%ProgramFiles(x86)%&quot;) {
	Prm := RegExReplace(Prm, &quot;%(.*)%&quot;, ProgramFiles86) ; или просто ProgramFiles, тогда EnvGet ProgramFiles86, ProgramFiles(x86) можно удалить
	}
If InStr(Prm, &quot;&quot;&quot;Бубль Гум&quot;&quot;&quot;) { ; просто прикол :)
	Prm := RegExReplace(Prm, &quot;&quot;&quot;(.*)&quot;&quot;&quot;, &quot;Это ж $1!&quot;)
	}
Return Prm
}
;___________________________________________________________

GetOSarch() { ; получить архитектуру OS
	DllCall(&quot;IsWow64Process&quot;, &quot;UInt&quot;, DllCall(&quot;GetCurrentProcess&quot;), &quot;UInt*&quot;, IsWow64Process)
Return IsWow64Process ? &quot;x64&quot;:&quot;x86&quot;
}
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Sun, 03 Dec 2017 19:57:05 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=121927#p121927</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Выполнение команды Run из переменной в файле txt или ini]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=121918#p121918</link>
			<description><![CDATA[<p><strong>MandarinKa02</strong>, еще раз большое спасибо!<br />Теперь все работает идеально!<br />Всего наилучшего!</p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Sun, 03 Dec 2017 17:16:56 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=121918#p121918</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Выполнение команды Run из переменной в файле txt или ini]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=121910#p121910</link>
			<description><![CDATA[<p>Переписал функцию. Сам ее создал еще более года назад и не пользовался(на тот момент опыта было мало в регулярных выражениях и не учел этот момент).<br />Вот исправленный вариант:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Пример</div><div class="fancy_spoiler"><p>var := &quot;Hello, %MyName(for_friends)%!&quot;<br />msgbox % ReplaceVariable(var)<br />reload</p></div></div><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;lib</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
ReplaceVariable(msg) {
	Pos := 1, match := &quot;&quot;
	While Pos := RegExMatch(msg, &quot;%(.*?)%&quot;, match, Pos+StrLen(match)){
		argc += 1
		old := StrReplace(match, &quot;%&quot;) ;Убираем &quot;%&quot;
		new := CheckVariable(old)     ;Получаем новую строку
		out := StrReplace(msg, &quot;%&quot; old &quot;%&quot;, new)
	} return out
}

CheckVariable(msg = &quot;None&quot;) {
	Global HomeWork ;Для глобальных переменных
	if(msg = &quot;MyName(for_friends)&quot;)
		return &quot;Bob&quot;
	if(msg = &quot;HomeWork&quot;)
		return HomeWork
	if(msg = &quot;A_Space&quot;)
		return A_Space
	if(msg = &quot;A_Tab&quot;)
		return A_Tab

	if(msg = &quot;A_WorkingDir&quot;)
		return A_WorkingDir
	if(msg = &quot;A_ScriptDir&quot;)
		return A_ScriptDir
	if(msg = &quot;A_ScriptName&quot;)
		return A_ScriptName
	if(msg = &quot;A_ScriptFullPath&quot;)
		return A_ScriptFullPath
	if(msg = &quot;A_ScriptHwnd&quot;)
		return A_ScriptHwnd


	if(msg = &quot;A_AhkVersion&quot;)
		return A_AhkVersion
	if(msg = &quot;A_AhkPath&quot;)
		return A_AhkPath
	if(msg = &quot;A_IsUnicode&quot;)
		return A_IsUnicode
	if(msg = &quot;A_IsCompiled&quot;)
		return A_IsCompiled
	if(msg = &quot;A_ExitReason&quot;)
		return A_ExitReason

	if(msg = &quot;A_YYYY&quot;)
		return A_YYYY
	if(msg = &quot;A_MM&quot;)
		return A_MM
	if(msg = &quot;A_DD&quot;)
		return A_DD
	if(msg = &quot;A_MMMM&quot;)
		return A_MMMM
	if(msg = &quot;A_MMM&quot;)
		return A_MMM
	if(msg = &quot;A_DDDD&quot;)
		return A_DDDD
	if(msg = &quot;A_DDD&quot;)
		return A_DDD
	if(msg = &quot;A_WDay&quot;)
		return A_WDay
	if(msg = &quot;A_YDay&quot;)
		return A_YDay
	if(msg = &quot;A_YWeek&quot;)
		return A_YWeek
	if(msg = &quot;A_Hour&quot;)
		return A_Hour
	if(msg = &quot;A_Min&quot;)
		return A_Min
	if(msg = &quot;A_Sec&quot;)
		return A_Sec
	if(msg = &quot;A_MSec&quot;)
		return A_MSec
	if(msg = &quot;A_Now&quot;)
		return A_Now
	if(msg = &quot;A_NowUTC&quot;)
		return A_NowUTC
	if(msg = &quot;A_TickCount&quot;)
		return A_TickCount



	if(msg = &quot;A_TimeIdle&quot;)
		return A_TimeIdle
	if(msg = &quot;A_TimeIdlePhysical&quot;)
		return A_TimeIdlePhysical


	if(msg = &quot;ComSpec&quot;)
		return ComSpec

	if(msg = &quot;A_Temp&quot;)
		return A_Temp

	if(msg = &quot;A_OSType&quot;)
		return A_OSType
	if(msg = &quot;A_OSVersion&quot;)
		return A_OSVersion
	if(msg = &quot;A_Is64bitOS&quot;)
		return A_Is64bitOS
	if(msg = &quot;A_PtrSize&quot;)
		return A_PtrSize
	if(msg = &quot;A_Language&quot;)
		return A_Language
	if(msg = &quot;A_ComputerName&quot;)
		return A_ComputerName
	if(msg = &quot;A_UserName&quot;)
		return A_UserName
	if(msg = &quot;A_WinDir&quot;)
		return A_WinDir
	if(msg = &quot;A_ProgramFiles&quot;)
		return A_ProgramFiles
	if(msg = &quot;A_AppData&quot;)
		return A_AppData

	if(msg = &quot;A_AppDataCommon&quot;)
		return A_AppDataCommon

	if(msg = &quot;A_Desktop&quot;)
		return A_Desktop
	if(msg = &quot;A_DesktopCommon&quot;)
		return A_DesktopCommon
	if(msg = &quot;A_StartMenu&quot;)
		return A_StartMenu
	if(msg = &quot;A_StartMenuCommon&quot;)
		return A_StartMenuCommon
	if(msg = &quot;A_Programs&quot;)
		return A_Programs
	if(msg = &quot;A_ProgramsCommon&quot;)
		return A_ProgramsCommon
	if(msg = &quot;A_Startup&quot;)
		return A_Startup
	if(msg = &quot;A_StartupCommon&quot;)
		return A_StartupCommon
	if(msg = &quot;A_MyDocuments&quot;)
		return A_MyDocuments
	if(msg = &quot;A_IsAdmin&quot;)
		return A_IsAdmin
	if(msg = &quot;A_ScreenWidth&quot;)
		return A_ScreenWidth
	if(msg = &quot;A_ScreenHeight&quot;)
		return A_ScreenHeight
	if(msg = &quot;A_ScreenDPI&quot;)
		return A_ScreenDPI

	if(msg = &quot;A_IPAddress1&quot;)
		return A_IPAddress1

	if(msg = &quot;A_Cursor&quot;)
		return A_Cursor
	if(msg = &quot;A_CaretX&quot;)
		return A_CaretX
	if(msg = &quot;A_CaretY&quot;)
		return A_CaretY
	if(msg = &quot;Clipboard&quot;)
		return Clipboard
	if(msg = &quot;ClipboardAll&quot;)
		return ClipboardAll
	if(msg = &quot;ErrorLevel&quot;)
		return ErrorLevel
	if(msg = &quot;A_LastError&quot;)
		return A_LastError
	
	return &quot;None&quot;
}
</code></pre></div></div></div>]]></description>
			<author><![CDATA[null@example.com (MandarinKa02)]]></author>
			<pubDate>Sun, 03 Dec 2017 13:23:50 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=121910#p121910</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Выполнение команды Run из переменной в файле txt или ini]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=121901#p121901</link>
			<description><![CDATA[<p><strong>MandarinKa02</strong>, спасибо огромное! Этот код работает.<br />Удалил из функции ненужное, добавил ProgramFiles, ProgramFiles64 и другое необходимое.</p><p>Единственный вопрос:</p><div class="codebox"><pre><code>
	If (sMsg = &quot;ProgramFiles(x86)&quot;) {
		Return ProgramFiles
		}
</code></pre></div><p>не работает. Возврат, как есть - %ProgramFiles(x86)%<br />Как можно это исправить?</p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Sat, 02 Dec 2017 23:03:28 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=121901#p121901</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Выполнение команды Run из переменной в файле txt или ini]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=121869#p121869</link>
			<description><![CDATA[<div class="codebox"><pre><code>
;#include lib
msg := &quot;[%A_Hour%:%A_Min%:%A_Sec%] Temp=%A_Temp%&quot;
Msgbox % &quot;Было: `n&quot; msg &quot;`nСтало: `n&quot; ReplaceVariable(msg)
</code></pre></div><br /><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;lib</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
ReplaceVariable(sMsg = &quot;None&quot;) {
	if(sMsg = &quot;None&quot;)
		return -1
	sMsg2 := sMsg
	Pos := 1, match := &quot;&quot;
	While Pos := RegExMatch(sMsg, &quot;%(.*?)%&quot;, match, Pos+StrLen(match)){
		iArgCount += 1
		iArg%iArgCount% := RegExReplace(match, &quot;%&quot;)
		iArg%iArgCount%_2 := % CheckVariable(iArg%iArgCount%)
		sMsg2 := RegExReplace(sMsg2, &quot;%&quot; iArg%iArgCount% &quot;%&quot;, iArg%iArgCount%_2, 1)
	} Return sMsg2
}

CheckVariable(sMsg = &quot;None&quot;) {
	Global HomeWork
	If(sMsg = &quot;HomeWork&quot;)
		return HomeWork
	If(sMsg = &quot;A_Space&quot;)
		return A_Space
	If(sMsg = &quot;A_Tab&quot;)
		return A_Tab

	If(sMsg = &quot;A_WorkingDir&quot;)
		return A_WorkingDir
	If(sMsg = &quot;A_ScriptDir&quot;)
		return A_ScriptDir
	If(sMsg = &quot;A_ScriptName&quot;)
		return A_ScriptName
	If(sMsg = &quot;A_ScriptFullPath&quot;)
		return A_ScriptFullPath
	If(sMsg = &quot;A_ScriptHwnd&quot;)
		return A_ScriptHwnd


	If(sMsg = &quot;A_AhkVersion&quot;)
		return A_AhkVersion
	If(sMsg = &quot;A_AhkPath&quot;)
		return A_AhkPath
	If(sMsg = &quot;A_IsUnicode&quot;)
		return A_IsUnicode
	If(sMsg = &quot;A_IsCompiled&quot;)
		return A_IsCompiled
	If(sMsg = &quot;A_ExitReason&quot;)
		return A_ExitReason

	If(sMsg = &quot;A_YYYY&quot;)
		return A_YYYY
	If(sMsg = &quot;A_MM&quot;)
		return A_MM
	If(sMsg = &quot;A_DD&quot;)
		return A_DD
	If(sMsg = &quot;A_MMMM&quot;)
		return A_MMMM
	If(sMsg = &quot;A_MMM&quot;)
		return A_MMM
	If(sMsg = &quot;A_DDDD&quot;)
		return A_DDDD
	If(sMsg = &quot;A_DDD&quot;)
		return A_DDD
	If(sMsg = &quot;A_WDay&quot;)
		return A_WDay
	If(sMsg = &quot;A_YDay&quot;)
		return A_YDay
	If(sMsg = &quot;A_YWeek&quot;)
		return A_YWeek
	If(sMsg = &quot;A_Hour&quot;)
		return A_Hour
	If(sMsg = &quot;A_Min&quot;)
		return A_Min
	If(sMsg = &quot;A_Sec&quot;)
		return A_Sec
	If(sMsg = &quot;A_MSec&quot;)
		return A_MSec
	If(sMsg = &quot;A_Now&quot;)
		return A_Now
	If(sMsg = &quot;A_NowUTC&quot;)
		return A_NowUTC
	If(sMsg = &quot;A_TickCount&quot;)
		return A_TickCount



	If(sMsg = &quot;A_TimeIdle&quot;)
		return A_TimeIdle
	If(sMsg = &quot;A_TimeIdlePhysical&quot;)
		return A_TimeIdlePhysical


	If(sMsg = &quot;ComSpec&quot;)
		return ComSpec

	If(sMsg = &quot;A_Temp&quot;)
		return A_Temp

	If(sMsg = &quot;A_OSType&quot;)
		return A_OSType
	If(sMsg = &quot;A_OSVersion&quot;)
		return A_OSVersion
	If(sMsg = &quot;A_Is64bitOS&quot;)
		return A_Is64bitOS
	If(sMsg = &quot;A_PtrSize&quot;)
		return A_PtrSize
	If(sMsg = &quot;A_Language&quot;)
		return A_Language
	If(sMsg = &quot;A_ComputerName&quot;)
		return A_ComputerName
	If(sMsg = &quot;A_UserName&quot;)
		return A_UserName
	If(sMsg = &quot;A_WinDir&quot;)
		return A_WinDir
	If(sMsg = &quot;A_ProgramFiles&quot;)
		return A_ProgramFiles
	If(sMsg = &quot;A_AppData&quot;)
		return A_AppData

	If(sMsg = &quot;A_AppDataCommon&quot;)
		return A_AppDataCommon

	If(sMsg = &quot;A_Desktop&quot;)
		return A_Desktop
	If(sMsg = &quot;A_DesktopCommon&quot;)
		return A_DesktopCommon
	If(sMsg = &quot;A_StartMenu&quot;)
		return A_StartMenu
	If(sMsg = &quot;A_StartMenuCommon&quot;)
		return A_StartMenuCommon
	If(sMsg = &quot;A_Programs&quot;)
		return A_Programs
	If(sMsg = &quot;A_ProgramsCommon&quot;)
		return A_ProgramsCommon
	If(sMsg = &quot;A_Startup&quot;)
		return A_Startup
	If(sMsg = &quot;A_StartupCommon&quot;)
		return A_StartupCommon
	If(sMsg = &quot;A_MyDocuments&quot;)
		return A_MyDocuments
	If(sMsg = &quot;A_IsAdmin&quot;)
		return A_IsAdmin
	If(sMsg = &quot;A_ScreenWidth&quot;)
		return A_ScreenWidth
	If(sMsg = &quot;A_ScreenHeight&quot;)
		return A_ScreenHeight
	If(sMsg = &quot;A_ScreenDPI&quot;)
		return A_ScreenDPI

	If(sMsg = &quot;A_IPAddress1&quot;)
		return A_IPAddress1

	If(sMsg = &quot;A_Cursor&quot;)
		return A_Cursor
	If(sMsg = &quot;A_CaretX&quot;)
		return A_CaretX
	If(sMsg = &quot;A_CaretY&quot;)
		return A_CaretY
	If(sMsg = &quot;Clipboard&quot;)
		return Clipboard
	If(sMsg = &quot;ClipboardAll&quot;)
		return ClipboardAll
	If(sMsg = &quot;ErrorLevel&quot;)
		return ErrorLevel
	If(sMsg = &quot;A_LastError&quot;)
		return A_LastError
	
	return &quot;None&quot;
}
</code></pre></div></div></div>]]></description>
			<author><![CDATA[null@example.com (MandarinKa02)]]></author>
			<pubDate>Fri, 01 Dec 2017 13:23:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=121869#p121869</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Выполнение команды Run из переменной в файле txt или ini]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=121857#p121857</link>
			<description><![CDATA[<p>Добрый день!</p><p>Как можно выполнить команду Run, считав ее параметры в виде переменной из текстового файла или ini?<br />Например, у меня скрипт читает Menu.txt в котором записаны стоки такого вида:</p><div class="codebox"><pre><code>
Notepad|notepad
Registry Workshop 1|&quot;C:\Program Files\Registry Workshop\RegWorkshopX64.exe&quot;
Registry Workshop 2|&quot;%ProgramFiles%\Registry Workshop\RegWorkshopX64.exe&quot;
Registry Workshop 3|% ProgramFiles64 &quot;\Registry Workshop\RegWorkshopX64.exe&quot;
</code></pre></div><br /><p>Скрипт имеет примерно такое содержание (схематично):</p><div class="codebox"><pre><code>
#NoEnv
EnvGet SystemDrive, SystemDrive
EnvGet ProgramFiles64, ProgramW6432
MenuLst := A_ScriptDir &quot;\Menu&quot; ; текстовой файл без расширения

Loop read, % MenuLst
	{
	PointTxt := StrSplit(A_LoopReadLine, &quot;|&quot;).1 ; получить имя запускаемой программы
	If (A_Index = &quot;1&quot;) {
		Command1 := StrSplit(A_LoopReadLine, &quot;|&quot;).2 ; получить команду запуска программы
		}

	бла бла бла .....

	}

Run % Command1
Run % Command2
Run % Command3
Run % Command4
</code></pre></div><p>Первая команда выполняется, т.е. - notepad , calc и прочая подобная фигня.<br />Вторая команда тоже выполняется, где указан конкретный path<br />С остальными большие проблемы.<br />Не понимает переменные ни в виндовом, ни в AHK формате.<br />Вываливает ошибку типа &quot;Не могу найти запускаемый файл ... бла бла бля!&quot;</p><p>Каким образом можно решить данный вопрос?</p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Fri, 01 Dec 2017 00:35:04 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=121857#p121857</guid>
		</item>
	</channel>
</rss>
