<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Замена значений в Combobox]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17905&amp;type=atom" />
	<updated>2023-08-10T17:31:07Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=17905</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Замена значений в Combobox]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158970#p158970" />
			<content type="html"><![CDATA[<p>В AHK v1 массивы [] и объекты {} это по сути одно и то же, просто в массиве ключами обычно являются числовые значения. Но это не обязательно, то есть можно без проблем выполнить такой код:<br /></p><div class="codebox"><pre><code>arr := []
arr[1] := 1
arr[&quot;nonNumericKey&quot;] := &quot;test&quot;
for k, v in arr {
   MsgBox % &quot;key: &quot; . k . &quot;`nvalue: &quot; . v
}</code></pre></div><p>А вот в AHK v2 такой номер уже не пройдёт, там [] и {} — это объекты разных типов, и такой код выдаст ошибку:<br /></p><div class="codebox"><pre><code>arr := []
arr.Length := 2
arr[1] := 1
arr[&quot;nonNumericKey&quot;] := &quot;test&quot;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-08-10T17:31:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158970#p158970</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Замена значений в Combobox]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158969#p158969" />
			<content type="html"><![CDATA[<p>Добавлю, что, например, в JScript массивы тоже реализованы как объекты. Одно другому, стало быть, не мешает.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2023-08-10T11:41:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158969#p158969</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Замена значений в Combobox]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158968#p158968" />
			<content type="html"><![CDATA[<p><strong>Phoenixxx_Czar</strong>, почитайте в справке про ассоциативные массивы.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2023-08-10T09:18:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158968#p158968</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Замена значений в Combobox]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158967#p158967" />
			<content type="html"><![CDATA[<p><strong>YMP</strong>, вы же берете из объекта, а не массива.</p>]]></content>
			<author>
				<name><![CDATA[Phoenixxx_Czar]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34426</uri>
			</author>
			<updated>2023-08-10T06:54:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158967#p158967</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Замена значений в Combobox]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158959#p158959" />
			<content type="html"><![CDATA[<p><strong>marusa122</strong><br />Из GUI получайте имя, а файл берите из массива.<br /></p><div class="codebox"><pre><code>
Browsers := {&quot;Opera&quot;: &quot;opera.exe&quot;, &quot;Google Chrome&quot;: &quot;chrome.exe&quot;}
MsgBox, % Browsers[&quot;Opera&quot;]
MsgBox, % Browsers[&quot;Google Chrome&quot;]
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2023-08-08T02:58:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158959#p158959</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Замена значений в Combobox]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158958#p158958" />
			<content type="html"><![CDATA[<p>Здравствуйте!<br />В скрипте Autohotley (GUI) есть Combobox со значениями opera.exe, firefox.exe, chrome.exe, msedge.exe, iexplore.exe.<br />Как заменить эти значения на Opera, Mozilla Firefox, Google Chrome, Microsoft Edge, Internet Exprorer соответственно? Но так, чтобы скрипт продолжил их читать как opera.exe, firefox.exe, chrome.exe, msedge.exe, iexplore.exe.<br />Основной скрипт: <br /></p><div class="codebox"><pre><code>Run, chrome.exe &quot;https://www.google.com/&quot; --new-window
Sleep, 5000
MsgBox, 64, Program1, Program1 запущена!`nЗдесь вы сможете начать работу!
WinSet, AlwaysOnTop, , A
Return</code></pre></div><p>Т.е. пользователь в Combobox выбирает Google Chrome, но скрипт должен распознавать это значение как chrome.exe.<br />Сам код формы для настройки скрипта: <br /></p><div class="codebox"><pre><code>#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%

ProgramName := &quot;Program1&quot;
ProgramName5 := &quot;Рабочий сайт&quot;

; Читаем настройки
GoSub ReadSettingsFromIni

MsgBox, 4, %ProgramName%, Вы хотите изменить настройки запуска? `n%ProgramName% пропустит этот шаг через несколько секунд..., 5
IfMsgBox Yes
{
	GoSub ShowSettingsWindow
	Return
}
else
; Тут или прошло пять секунд, или пользователь нажал Нет.
{
GoTo OnButtonRun
Return
}

; ===========================
; Конец секции автовыполнения



; Чтение настроек из .ini-файла в переменные
; ==========================================
ReadSettingsFromIni:
{
IniRead, Ed_App5, %A_ScriptDir%\..\AppLauncher.ini, Settings, AppToRun5, %A_Space%
IniRead, Ed_Browser, %A_ScriptDir%\..\AppLauncher.ini, Settings, Browser

	Return
}


; Создание окна настроек
; ======================
ShowSettingsWindow:
{
Gui, New
Gui, Add, Text  , XM+20   Y80  W90  R1, %ProgramName5%:
Gui, Add, Edit  , X+10 YP   W120 R1 vEd_App5,   %Ed_App5%
Gui, Add, Button, X+0  YP   W20  R1 vBt_App5 gOnButtonApp5, ...
Gui, Add, Text, XM+20   Y115  W90  R1, Рабочий браузер:
Gui, Add, Combobox, x+10 yp w120 r5 vEd_Browser, opera.exe|firefox.exe|chrome.exe|msedge.exe|iexplore.exe

Gui, Add, Button, XM   Y200 W270 R3 vBt_Run  gOnButtonRun , Начать работу
Gui, Add, Button, XM   Y+M W130 R1 vBt_Save gOnButtonSave, Сохранить
Gui, Add, Button, X+10 YP  W130 R1 vBt_Exit gOnButtonExit, Выйти

Gui, Show,, %ProgramName%
Return
}

; При нажатии Save значения из текстовых полей сохраняются в файл настроек AppLauncher.ini
OnButtonSave:
{
	Gui, Submit, NoHide
	IniWrite, %Ed_App5% , %A_ScriptDir%\..\AppLauncher.ini, Settings, AppToRun5
	IniWrite, %Ed_Browser%, %A_ScriptDir%\..\AppLauncher.ini, Settings, Browser
	Sleep 100
	Msgbox,, %ProgramName%, Настройки успешно сохранены!, 3
	Return
}

OnButtonApp5:
{
	MsgBox, 48, %ProgramName%, В это поле нужно вставить ссылку!, 5
	Return
}

; Обработчик изменения значения Combobox для выбора браузера
Ed_Browser:
GuiControlGet, chosenBrowser
global Ed_Browser
Ed_Browser := chosenBrowser
Return

; При нажатии кнопки Start запускаем приложение с указанными в текстовых полях данными
OnButtonRun:
{
Gui, Submit
Gui, New
Gui, Font, s10
Gui, Add, Text, x10 y10  w128 h50 center, Выберите способ работы с документами:
Gui, Add, Picture, x10 y60 w128 h128 gA1, %A_ScriptDir%\..\Design\Ярлык для %ProgramName5%.png
Gui, Show,  xCenter yCenter w148 h200, %ProgramName%
Return
}

	A1:
if (Ed_Browser = &quot;&quot;) {
    MsgBox, 48, Ошибка, Не указан рабочий браузер!
    Gui, Destroy
    return
}
if (Ed_App5 = &quot;&quot;)
{
    	Run, %Ed_Browser% &quot;https://www.google.com/&quot; --new-window
	Sleep, 5000
	MsgBox, 64, %ProgramName%, %ProgramName% запущена!`nЗдесь вы сможете начать работу!
	WinSet, AlwaysOnTop, , A
	Return
}
else
{
    	Run, %Ed_Browser% %Ed_App5% --new-window
	Sleep, 5000
	MsgBox, 64, %ProgramName%, %ProgramName% запущена!`nЗдесь вы сможете начать работу!
	WinSet, AlwaysOnTop, , A
	Return
}

; При нажатии Esc, закрытии окна или нажатии кнопки Exit скрипт завершается.
GuiClose:
GuiEscape:
OnButtonExit:
	ExitApp</code></pre></div>]]></content>
			<author>
				<name><![CDATA[marusa122]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=43077</uri>
			</author>
			<updated>2023-08-07T17:37:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158958#p158958</id>
		</entry>
</feed>
