Тема: 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
}