Не удается открыть форму Topic is solved

Помощь в написании скриптов
marusa122
Posts: 135
Joined: 22 Mar 2023, 07:48

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

21 Apr 2023, 03:44

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

Code: Select all

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
}
garry
Posts: 3793
Joined: 22 Dec 2013, 12:50

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

22 Apr 2023, 10:22

Здравствуйте Маруса122 , пример
EDIT : small modified

Code: Select all

 
;- Edited
;- Не удается открыть форму 
;- https://www.autohotkey.com/boards/viewtopic.php?f=47&t=116324
RSSINI=%A_scriptdir%\TEST_config.ini
ifnotexist,%rssini%
    {
    IniWrite,%a_username%, %rssini% , Username,Пользователь Windows
    IniWrite,0000        , %rssini% , Password,Password
	IniWrite,charmap     , %rssini% , AppToRun1,EXE1
	IniWrite,notepad     , %rssini% , AppToRun2,EXE2
	IniWrite,calc        , %rssini% , AppToRun3,EXE3
    }
msgbox, 262147, Список программ, Вы хотите изменить настройки запуска?`nчерез 5 секунд автоматически выбирается "Нет", 5   ;- стартовый MsgBox
IfMsgBox Yes        ; если в стартовом MsgBox выбрано Да
 gosub,CASE1
IfMsgbox Cancel
 exitapp 
if case1<>1
 gosub,CASE2
return 
;-------------------------------------------------
CASE1: 
case1=1 

; Читаем сохранённые настройки из файла
IniRead, viUser, %rssini%,Username,Пользователь Windows
IniRead, viPass, %rssini%, Password,Password
IniRead, viApp1, %rssini%, AppToRun1,EXE1
IniRead, viApp2, %rssini%, AppToRun2,EXE2
IniRead, viApp3, %rssini%, AppToRun3,EXE3
;-
; Создаём окно с подписями, текстовыми полями и кнопками
;-
Gui, Add, Text  , x10  y10  W70  R1, Уч. запись:
Gui, Add, Edit  , x100 y10  W200 R1 vEd_User,  %viUser%
;-
Gui, Add, Text  , x10  y40  W70    , Пароль:
Gui, Add, Edit  , x100 y40  w200 R1 vEd_Pass,  %viPass%
;-
Gui, Add, Text  , x10  y70  W70    , Программа1:
Gui, Add, Edit  , x100 y70  W200 R1 vEd_App1,   %viApp1%
Gui, Add, Button, x300 y70  W20     vBt_App1 gApp1, ...
;-
Gui, Add, Text  , x10  y100  W70    , Программа2:
Gui, Add, Edit  , x100 y100  W200 R1 vEd_App2,   %viApp2%
Gui, Add, Button, x300 y100  W20     vBt_App2 gApp2, ...
;-
Gui, Add, Text  , x10  y130  W70  R1, Программа3:
Gui, Add, Edit  , x100 y130  W200 R1 vEd_App3,   %viApp3%
Gui, Add, Button, x300 y130  W20     vBt_App3 gApp3, ...
;-
Gui, Add, Button, x10   y160 W170   vBt_Run  gCase2 , Начать работу
Gui, Add, Button,  x200  y160 W130  vBt_Save gSave, Сохранить 
Gui, Add, Button,  x350  y160 W130  vBt_Exit gExit, Выйти    
Gui, Show,x100 y100 w600 h500, App Launcher
Return
;----------------
; При нажатии Esc, закрытии окна или нажатии кнопки Exit скрипт завершается.
GuiEscape:
GuiClose:
Exit:
ExitApp
;------------------------------
;---------------	
; При нажатии кнопки с многоточием открываем окно выбора файла
App1:
a_scriptdir1=%a_programfiles%
FileSelectFile,OutFile1,  % 1|2|32,  %A_ScriptDir1%,  Choose exe to run...,  Application (*.exe)
If (ErrorLevel == 0)
 GuiControl,, Ed_App1, %OutFile1%
gosub,save
Return
;------------------------------
App2:
a_scriptdir2=%a_programfiles%
FileSelectFile,OutFile2,  % 1|2|32,  %A_ScriptDir2%,  Choose exe to run...,  Application (*.exe)
If (ErrorLevel == 0)
 GuiControl,, Ed_App2, %OutFile2%
gosub,save
Return
;------------------------------
App3:
a_scriptdir3=%a_programfiles%
FileSelectFile,OutFile3,  % 1|2|32,  %A_ScriptDir3%,  Choose exe to run...,  Application (*.exe)
If (ErrorLevel == 0)
 GuiControl,, Ed_App3, %OutFile3%
gosub,save
Return
;------------------------------
	
;---------------	
; При нажатии Save значения из текстовых полей сохраняются в файл настроек
Save:
	Gui, Submit, NoHide
	IniWrite, %Ed_User% , %rssini%, Username,Пользователь Windows
	IniWrite, %Ed_Pass% , %rssini%, Password , Password
	IniWrite, %Ed_App1% , %rssini%, AppToRun1,EXE1
	IniWrite, %Ed_App2% , %rssini%, AppToRun2,EXE2
	IniWrite, %Ed_App3% , %rssini%, AppToRun3,EXE3
	SoundPlay, *64
	ToolTip, Saved!
	Sleep 1000
	ToolTip
Return
;---------------	
;========================================================================
CASE2:
;- если в стартовом MsgBox выбрано Нет, или автоматический запуск после 5 секунд ожидания
Gui,1:destroy
Gui,2:default
IniRead, iUser, %rssini%,Username,Пользователь Windows
IniRead, iPass, %rssini%, Password,Password
IniRead, iApp1, %rssini%, AppToRun1,EXE1
IniRead, iApp2, %rssini%, AppToRun2,EXE2
IniRead, iApp3, %rssini%, AppToRun3,EXE3
Gui,2: Font, s10
Gui,2: Add, Text, x100 y10 +Center, Выберите, какую программу запустить:
Gui,2: Add, Picture, x10 y60 w128  h128 gA1, D:\Ярлыки\Ярлык Программы1.ico    ;- << add ico
Gui,2: Add, Picture, x158 y60 w128 h128 gA2, D:\Ярлыки\Ярлык Программы2.ico
Gui,2: Add, Picture, x306 y60 w128 h128 gA3, D:\Ярлыки\Ярлык Программы3.ico
Gui,2: Show,  xCenter yCenter w444 h200, Список программ
return
;------------------------------
2Guiclose:
Exitapp
;------------------------------
	A1:
	;RunAs, %Ed_User%, %Ed_Pass%
	msgbox, 262208, ,USER=%iUser%`nPass=%iPass%`nAPP-1=%iApp1%,2
	try
      {	
	  Run, %iApp1%
	  exitapp
	  }
	catch,err 
	   gosub,aa1
	;RunAs
	Return
;------------------------------
	A2:
	;RunAs, %Ed_User%, %Ed_Pass%
	msgbox, 262208, ,USER=%iUser%`nPass=%iPass%`nAPP-2=%iApp2%,2
	try
      {	
	  Run, %iApp2%
	  exitapp
	  }
	catch,err 
      gosub,aa1
	;RunAs
	Return
;------------------------------
	A3:
	;RunAs, %Ed_User%, %Ed_Pass%
	msgbox, 262208, ,USER=%iUser%`nPass=%iPass%`nAPP-3=%iApp3%,2
	try
      {	
	  Run, %iApp3%
	  exitapp
	  }
	catch,err 
     gosub,aa1
	;RunAs
	Return
;-----------------------------	
aa1:
x1:="Message=" . err.Message
x2:="Extra  =" . err.extra
x3:="File   =" . err.file
x4:="Line   =" . err.line
x5:="What   =" . err.what
msgbox, 262208,ERROR,Error=`n%x1%`n----------------------`n%x2%`n%x3%`n%x4%`n%x5%`n--------------------`n
return	
;=======================
esc::exitapp
;=========================================================================================================

garry
Posts: 3793
Joined: 22 Dec 2013, 12:50

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

22 Apr 2023, 13:14

добавлено ICO вместо картинки
;- MODIFIED = Я забыл удалить gLabels A1-A3 / bigger ICO

Code: Select all

;- Не удается открыть форму 
;- https://www.autohotkey.com/boards/viewtopic.php?f=47&t=116324
;- MODIFIED = bigger ICO
;- MODIFIED = Я забыл удалить gLabels A1-A3 
;- MODIFIED = added ICO instead of picture
RSSINI=%A_scriptdir%\TEST2_config.ini
ifnotexist,%rssini%
    {
    IniWrite,%a_username%, %rssini% , Username,Пользователь Windows
    IniWrite,0000        , %rssini% , Password,Password
	IniWrite,charmap     , %rssini% , AppToRun1,EXE1
	IniWrite,notepad     , %rssini% , AppToRun2,EXE2
	IniWrite,calc        , %rssini% , AppToRun3,EXE3
    }
msgbox, 262147, Список программ, Вы хотите изменить настройки запуска?`nчерез 5 секунд автоматически выбирается "Нет", 5   ;- стартовый MsgBox
IfMsgBox Yes        ; если в стартовом MsgBox выбрано Да
 gosub,CASE1
IfMsgbox Cancel
 exitapp 
if case1<>1
 gosub,CASE2
return 
;-------------------------------------------------
CASE1: 
case1=1
; Читаем сохранённые настройки из файла
IniRead, viUser, %rssini%,Username,Пользователь Windows
IniRead, viPass, %rssini%, Password,Password
IniRead, viApp1, %rssini%, AppToRun1,EXE1
IniRead, viApp2, %rssini%, AppToRun2,EXE2
IniRead, viApp3, %rssini%, AppToRun3,EXE3
;-
; Создаём окно с подписями, текстовыми полями и кнопками
;-
Gui, Add, Text  , x10  y10  W70  R1, Уч. запись:
Gui, Add, Edit  , x100 y10  W90  R1 center vEd_User,  %viUser%
;-
Gui, Add, Text  , x10  y40  W70    , Пароль:
Gui, Add, Edit  , x100 y40  w90  R1 center vEd_Pass,  %viPass%
;-
Gui, Add, Text  , x10  y70  W70    , Программа1:
Gui, Add, Edit  , x100 y70  W200 R1 vEd_App1,   %viApp1%
Gui, Add, Button, x300 y70  W20     vBt_App1 gApp1, ...
;-
Gui, Add, Text  , x10  y100  W70    , Программа2:
Gui, Add, Edit  , x100 y100  W200 R1 vEd_App2,   %viApp2%
Gui, Add, Button, x300 y100  W20     vBt_App2 gApp2, ...
;-
Gui, Add, Text  , x10  y130  W70  R1, Программа3:
Gui, Add, Edit  , x100 y130  W200 R1 vEd_App3,   %viApp3%
Gui, Add, Button, x300 y130  W20     vBt_App3 gApp3, ...
;-
Gui, Add, Button, x10   y160 W170   vBt_Run  gCase2 , Начать работу
Gui, Add, Button,  x200  y160 W130  vBt_Save gSave, Сохранить 
Gui, Add, Button,  x350  y160 W130  vBt_Exit gExit, Выйти    
Gui, Show,x100 y100 w510 h220, App Launcher
Return
;----------------
; При нажатии Esc, закрытии окна или нажатии кнопки Exit скрипт завершается.
GuiEscape:
GuiClose:
Exit:
ExitApp
;------------------------------
;---------------	
; При нажатии кнопки с многоточием открываем окно выбора файла
App1:
a_scriptdir1=%a_programfiles%
FileSelectFile,OutFile1,  % 1|2|32,  %A_ScriptDir1%,  Choose exe to run...,  Application (*.exe)
If (ErrorLevel == 0)
 GuiControl,, Ed_App1, %OutFile1%
gosub,save
Return
;------------------------------
App2:
a_scriptdir2=%a_programfiles%
FileSelectFile,OutFile2,  % 1|2|32,  %A_ScriptDir2%,  Choose exe to run...,  Application (*.exe)
If (ErrorLevel == 0)
 GuiControl,, Ed_App2, %OutFile2%
gosub,save
Return
;------------------------------
App3:
a_scriptdir3=%a_desktop%
;FileSelectFile,OutFile3,  % 1|2|32,  %A_ScriptDir3%,  Choose to run..., Application (*.exe)
FileSelectFolder,Var,3,%a_scriptdir3%,Choose a FOLDER
If (ErrorLevel == 0)
 GuiControl,, Ed_App3, %var%
gosub,save
Return
;------------------------------
	
;---------------	
; При нажатии Save значения из текстовых полей сохраняются в файл настроек
Save:
	Gui, Submit, NoHide
	IniWrite, %Ed_User% , %rssini%, Username,Пользователь Windows
	IniWrite, %Ed_Pass% , %rssini%, Password , Password
	IniWrite, %Ed_App1% , %rssini%, AppToRun1,EXE1
	IniWrite, %Ed_App2% , %rssini%, AppToRun2,EXE2
	IniWrite, %Ed_App3% , %rssini%, AppToRun3,EXE3
	SoundPlay, *64
	ToolTip, Saved!
	Sleep 1000
	ToolTip
Return
;---------------	
;========================================================================
CASE2:
Gui,1:destroy
Gui,2:default
Gui,2:color,black
Gui,2:Font,s22 cBlack ,Lucida Console
transform,s,chr,32
pictxx05:=""
;-
IniRead, iUser, %rssini%,Username,Пользователь Windows
IniRead, iPass, %rssini%, Password,Password
IniRead, iApp1, %rssini%, AppToRun1,EXE1
IniRead, iApp2, %rssini%, AppToRun2,EXE2
IniRead, iApp3, %rssini%, AppToRun3,EXE3
;-
if (iapp1="charmap")
  iapp1:="C:\Windows\system32\charmap.exe"
if (iapp2="notepad")
  iapp2:="C:\Windows\system32\notepad.exe"
if (iapp3="calc")
  iapp3:="C:\Windows\system32\calc.exe"
;-  
Gui,2: add, ListView, x10 yp+24 r7 w480 HwndHLV1 vMyListView grid backgroundWhite +altsubmit gLW1, Name|Path
LV_ModifyCol(1, 400),LV_ModifyCol(2, 0)
;-
ILStatus := IL_Create(1,1,1)                ;bigger
LV_SetImageList(ILStatus, 1)
  
SplitPath,iapp1, name, dir, ext, name_no_ext, drive
IconNumber := IL_Add(ILSTATUS, pictxx05)      ;- clear with picture which not exist
IconNumber := IL_Add(ILSTATUS, iapp1 )
LV_Add("icon" . IconNumber ,  s . s . name_no_ext,iapp1)

SplitPath,iapp2, name, dir, ext, name_no_ext, drive
IconNumber := IL_Add(ILSTATUS, pictxx05)
IconNumber := IL_Add(ILSTATUS, iapp2 )
LV_Add("icon" . IconNumber ,  s . s . name_no_ext,iapp2)

SplitPath,iapp3, name, dir, ext, name_no_ext, drive
IconNumber := IL_Add(ILSTATUS, pictxx05)
IconNumber := IL_Add(ILSTATUS, iapp3 )
LV_Add("icon" . IconNumber ,  s . s . name_no_ext,iapp3)
  
Gui,2:show
return
;------------
;------------------------------
2Guiclose:
Exitapp
;------------------------------
LW1:
Gui,2:ListView,MyListview
LV_GetText(C2,A_EventInfo,2)
if A_GuiEvent = Normal
  try
   {  
   run,%c2%
   exitapp
   }
  catch,err 
   gosub,aa1
return
;------------
aa1:
x1:="Message=" . err.Message
x2:="Extra  =" . err.extra
x3:="File   =" . err.file
x4:="Line   =" . err.line
x5:="What   =" . err.what
msgbox, 262208,ERROR,Error=`n%x1%`n----------------------`n%x2%`n%x3%`n%x4%`n%x5%`n--------------------`n
return
;------------
;=======================
esc::exitapp
;=========================================================================================================

garry
Posts: 3793
Joined: 22 Dec 2013, 12:50

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

25 Apr 2023, 04:05

LV_ICO.jpg
LV_ICO.jpg (40.66 KiB) Viewed 844 times

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 10 guests