1

Тема: AHK: Не удается открыть форму

Здравствуйте!
Есть скрипт. Первое, что должно открываться - стартовый Msgbox "Вы хотите изменить настройки?". После 5 секунд ожидания действий пользователя автоматически выбирается "Нет".
Если выбрано "Да", открывается форма для задания имени пользователя, пароля и расположения приложений (Gui1). Там пишется имя локального пользователя, пароль от его учетной записи и указываются расположения exe-файлов трех программ, которые должны открываться от его имени - Программа1, Программа2, Программа3. Заполнять все расположения необязательно.
При нажатии кнопки "Сохранить" веденные данные сохраняются в AppLauncher.ini (будет создан в той же папке, где находится скрипт).
При нажатии кнопки "Выйти" выполняется выход из этого окна.
При нажатии кнопки "Начать работу" должно открыться новое окно (Gui2). В нем текст "Выберите, какую программу запустить" и ниже - три ярлыка (Программы1, Программы2 и Программы3). При нажатии на ярлык Программы1, запускается файл Программы1 из расположения, заданного ранее в настройках. Если нажать на ярлык Программы2, должны выполняться те же действия для Программы2. И т.д. Если для какой-то программы не задано расположение, при клике на ее ярлык должен появляться Msgbox "Ошибка! Вы не задали расположение этой программы" (вот этот момент реализовать вообще не получается).
Если в стартовом Msgbox "Вы хотите изменить настройки?" выбрано "Нет", должен сразу открываться Gui2 с тем же функционалом.
Пробовала написать код, но при попытке его запустить вместо стартового Msgbox выскакивают ошибки. В чем может быть проблема?

MsgBox, 4, Список программ, Вы хотите изменить настройки запуска?, 5 ; стартовый MsgBox
Sleep, 1000
Send, {TAB}{SPACE} ; через 5 секунд автоматически выбирается "Нет"
IfMsgBox Yes ; если в стартовом MsgBox выбрано Да
{
; Читаем сохранённые настройки из файла AppLauncher.ini
IniRead, viUser, AppLauncher.ini, Settings, Username, Пользователь Windows
IniRead, viPass, AppLauncher.ini, Settings, Password, 0000
IniRead, viApp1, AppLauncher.ini, Settings, AppToRun1, %A_Space1%
IniRead, viApp2, AppLauncher.ini, Settings, AppToRun2, %A_Space2%
IniRead, viApp3, AppLauncher.ini, Settings, AppToRun3, %A_Space3%

; Создаём окно с подписями, текстовыми полями и кнопками
Gui, New ; это Gui1

Gui, Add, Text  , XM   YM   W70  R1, Уч. запись:
Gui, Add, Edit  , X+10 YP   W200 R1 vEd_User,  %viUser%

Gui, Add, Text  , XM   Y+M  W70  R1, Пароль:
Gui, Add, Edit  , X+10 YP   W200 R1 vEd_Pass,  %viPass%

Gui, Add, Text  , XM   Y+M  W70  R1, Программа1:
Gui, Add, Edit  , X+10 YP   W180 R1 vEd_App1,   %viApp1%
Gui, Add, Button, X+0  YP   W20  R1 vBt_App1 gOnButtonApp1, ...

Gui, Add, Text  , XM   Y+M  W70  R1, Программа2:
Gui, Add, Edit  , X+10 YP   W180 R1 vEd_App2,   %viApp2%
Gui, Add, Button, X+0  YP   W20  R1 vBt_App2 gOnButtonApp2, ...


Gui, Add, Text  , XM   Y+M  W70  R1, Программа3:
Gui, Add, Edit  , X+10 YP   W180 R1 vEd_App3,   %viApp3%
Gui, Add, Button, X+0  YP   W20  R1 vBt_App3 gOnButtonApp3, ...

Gui, Add, Button, XM   Y+M 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,, App Launcher
Return

; При нажатии Esc, закрытии окна или нажатии кнопки Exit скрипт завершается.
GuiEscape:
GuiClose:
OnButtonExit:
	ExitApp

; При нажатии Save значения из текстовых полей сохраняются в файл настроек AppLauncher.ini
OnButtonSave:
	Gui, Submit, NoHide
	IniWrite, %Ed_User%, AppLauncher.ini, Settings, Username
	IniWrite, %Ed_Pass%, AppLauncher.ini, Settings, Password
	IniWrite, %Ed_App1% , AppLauncher.ini, Settings, AppToRun1
	IniWrite, %Ed_App2% , AppLauncher.ini, Settings, AppToRun2
	IniWrite, %Ed_App3% , AppLauncher.ini, Settings, AppToRun3
	SoundPlay, *64
	ToolTip, Saved!
	Sleep 1000
	ToolTip
	Return

; При нажатии кнопки с многоточием открываем окно выбора файла
OnButtonApp1:
	FileSelectFile, vOutFile,  % 1|2|32,  %A_ScriptDir1%,  Choose exe to run...,  Application (*.exe)
	If (ErrorLevel == 0)
		GuiControl, Text, Ed_App1, %vOutFile1%
	Return

OnButtonApp2:
	FileSelectFile, vOutFile,  % 1|2|32,  %A_ScriptDir2%,  Choose exe to run...,  Application (*.exe)
	If (ErrorLevel == 0)
		GuiControl, Text, Ed_App2, %vOutFile2%
	Return

OnButtonApp3:
	FileSelectFile, vOutFile,  % 1|2|32,  %A_ScriptDir3%,  Choose exe to run...,  Application (*.exe)
	If (ErrorLevel == 0)
		GuiControl, Text, Ed_App3, %vOutFile3%
	Return

; При нажатии кнопки Start запускаем приложение с указанными в текстовых полях данными
OnButtonRun:

Gui, New ; это Gui2
Gui, Font, s10
Gui, Add, Text, x100 y10 +Center, Выберите, какую программу запустить:
Gui, Add, Picture, x10 y60 w128 h128 gA1, D:\Ярлыки\Ярлык Программы1.ico
Gui, Add, Picture, x158 y60 w128 h128 gA2, D:\Ярлыки\Ярлык Программы2.ico
Gui, Add, Picture, x306 y60 w128 h128 gA3, D:\Ярлыки\Ярлык Программы3.ico
Gui, Show,  xCenter yCenter w444 h200, Список программ
Return
	A1:
	RunAs, %Ed_User%, %Ed_Pass%
	Run %Ed_App1%
	RunAs
	Return
	A2:
	RunAs, %Ed_User%, %Ed_Pass%
	Run %Ed_App2%
	RunAs
	Return
	A3
	RunAs, %Ed_User%, %Ed_Pass%
	Run %Ed_App3%
	RunAs
	Return
Guiclose:
Exitapp
}
else
{ ;  если в стартовом MsgBox выбрано Нет, или автоматический запуск после 5 секунд ожидания
    IniRead, viUser, AppLauncher.ini, Settings, Username, Пользователь Windows
    IniRead, viPass, AppLauncher.ini, Settings, Password, 0000
    IniRead, viApp1, AppLauncher.ini, Settings, AppToRun1, %A_Space1%
    IniRead, viApp2, AppLauncher.ini, Settings, AppToRun2, %A_Space2%
    IniRead, viApp3, AppLauncher.ini, Settings, AppToRun3, %A_Space3%
Gui, Font, s10
Gui, Add, Text, x100 y10 +Center, Выберите, какую программу запустить:
Gui, Add, Picture, x10 y60 w128 h128 gA1, D:\Ярлыки\Ярлык Программы1.ico
Gui, Add, Picture, x158 y60 w128 h128 gA2, D:\Ярлыки\Ярлык Программы2.ico
Gui, Add, Picture, x306 y60 w128 h128 gA3, D:\Ярлыки\Ярлык Программы3.ico
Gui, Show,  xCenter yCenter w444 h200, Список программ
Return
	A1:
	RunAs, %Ed_User%, %Ed_Pass%
	Run %Ed_App1%
	RunAs
	Return
	A2:
	RunAs, %Ed_User%, %Ed_Pass%
	Run %Ed_App2%
	RunAs
	Return
	A3
	RunAs, %Ed_User%, %Ed_Pass%
	Run %Ed_App3%
	RunAs
	Return
Guiclose:
Exitapp
} 

2

Re: AHK: Не удается открыть форму

Нажал ли что-то юзер можно проверить так:

IfMsgBox Timeout
Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

3

Re: AHK: Не удается открыть форму

Phoenixxx_Czar Таймер и автоматический выбор варианта "Нет" работает и том варианте, который у меня в коде, это проверено на других формах. Но вот конкретно эта форма почему-то не хочет открываться...

4

Re: AHK: Не удается открыть форму

Но вы же понимаете, что ваш метод - костыль?

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)