Доброго времени суток.
Пытаюсь собрать свой собственный стартер(запуск отмеченных программ)
1.Есть файл ини. в нем сейчас 5 пунктов(количество может меняться)
каждый пункт состоит из: имя, пояснение, подсказка, путь к exe1,exe2,exe3(3 этапа работы каждой программы).
2.Что хотелось бы иметь на выходе:
-по каждому пункту формируется строчка состоящая из 3х чекбоксов(запускают экзэшники), название, пояснение, статус разделенный на 3 части соответственно.
Что на данный момент получилось собрать, смотрите ниже.
Не могу понять как несколько чекбоксов отрисовывать в одну строчку(и потом опрашивать их же на наличие события), не понимаю как сделать ,чтобы при выборе чекбокса и нажатии на старт, адресная строка к экзешнику бралась из файла ини, соответствующего пункта, соответствующего экзешника.
Вопрос-просьба-мольба: безумно устал разбираться в коде(ну совсем не мое, железячник я).....если кому не лень будет- направьте в нужное русло советами и подсказками.
Заранее безумно благодарен.
Так трудно сделать?
madmasles
Пытаюсь собрать свой собственный стартер(запуск отмеченных программ)
1.Есть файл ини. в нем сейчас 5 пунктов(количество может меняться)
каждый пункт состоит из: имя, пояснение, подсказка, путь к exe1,exe2,exe3(3 этапа работы каждой программы).
2.Что хотелось бы иметь на выходе:
-по каждому пункту формируется строчка состоящая из 3х чекбоксов(запускают экзэшники), название, пояснение, статус разделенный на 3 части соответственно.
Что на данный момент получилось собрать, смотрите ниже.
Не могу понять как несколько чекбоксов отрисовывать в одну строчку(и потом опрашивать их же на наличие события), не понимаю как сделать ,чтобы при выборе чекбокса и нажатии на старт, адресная строка к экзешнику бралась из файла ини, соответствующего пункта, соответствующего экзешника.
Вопрос-просьба-мольба: безумно устал разбираться в коде(ну совсем не мое, железячник я).....если кому не лень будет- направьте в нужное русло советами и подсказками.
Заранее безумно благодарен.
Код:
#include <GUIConstantsEx.au3>
#include <Array.au3>
#include <GuiButton.au3>
#include <GuiTab.au3>
#NoTrayIcon
FileChangeDir(@ScriptDir) ;назначает рабочий каталог
$IniName = StringRegExpReplace(@ScriptName, '^(.*?)(?:\.[^.]+)?$', '\1') & '.ini' ;в переменную имя ини подходящему под шаблон
$Ini = @ScriptDir & '\' & $IniName ; Name.ini = Name.exe ; $Ini -путь к файлу ини
;если файл ини не существует - создать
If Not FileExists($Ini) Then
_Create_ini()
If Not FileExists($Ini) Then
;MsgBox(0, $LngErr, $LngMs1 & ' ' & $IniName)
Exit
EndIf
EndIf
Global $aIniSec = IniReadSectionNames($Ini) ; в переменной массив со всеми именами разделов
;назначает переменной числовое представление значения из параметра
$font = IniRead($Ini, 'GUI', 'FontSize', '') ;размер шрифта кнопок
$fontB = Number(IniRead($Ini, 'GUI', 'FontBold', '')) ;размер ????(прописан 1)
$icon = IniRead($Ini, 'GUI', 'icon', '') ;иконка
$PathPic = IniRead($Ini, 'GUI', 'Picture', '') ;изображение
If Not StringInStr($PathPic, ':') Then ;если в пути нету : , тогда проверяем первый левый символ на = "/", если равно, то обрезаем его
If StringLeft($PathPic, 1) = '\' Then StringTrimLeft($PathPic, 1)
$PathPic = @ScriptDir & '\' & $PathPic ;скрипт директория \ название изображения
EndIf
Local $mrgn,$GuiName,$CNF,$CNB,$row,$FHeight,$FWidht,$Chkb,$Htab,$Hbat
$mrgn = IniRead($Ini, 'GUI', 'Margin','')
$GuiName = IniRead($Ini, 'GUI', 'Title','') ;имя окна из ини
$CNF = IniRead($Ini, 'GUI', 'ConstName', '50')
$CNB = IniRead($Ini, 'GUI', 'ConstNamePoyasn', '50')
$Chkb = 20
$Htab = 30
$Hbat = 30
;описание размеров окна
$row = $aIniSec[0] - 1 ;количество строк
$FWidht = ($mrgn*2)+($Chkb*6)+(7*($mrgn-10))+$CNB+$CNF ;ширина
$FHeight = ($mrgn*6)+($Chkb*$row)+(($mrgn-5)*($row-2))+$Htab+$Hbat ;высота +&Htab высота таба+ &Hbat высота кнопки+ $mrgn*2 отступы от текста и от кнопки mrgn*2
$FormWidth = $FWidht
$FormHeight = ($mrgn*6)+($Chkb*$row)+(($mrgn-5)*($row-2))
;создание гуи
Global $checkbox= $aIniSec
$form = GUICreate("Название", $FWidht, $FHeight, -1, -1)
$tab = GUICtrlCreateTab(-1, -1, $FormWidth, $FormHeight, $TCS_MULTILINE)
$tab1 = GUICtrlCreateTabItem("№1")
For $i = 1 To UBound($checkbox) -4
;$checkbox[$i] = GUICtrlCreateCheckbox(".", $mrgn, $mrgn+($i - 1)*20)
;$checkbox[$i] = GUICtrlCreateCheckbox(".", $mrgn+30+($mrgn-30), $mrgn+($i - 1)*20)
$checkbox[$i] = GUICtrlCreateCheckbox($checkbox[$i], $mrgn+2*20+2*($mrgn-20), $mrgn+($i - 1)*20)
Next
$tab2 = GUICtrlCreateTabItem("№2")
GUICtrlSetState(-1,$GUI_SHOW)
For $i = 4 To UBound($checkbox) - 1
$checkbox[$i] = GUICtrlCreateCheckbox($checkbox[$i], 24, 12 + ($i - 1)*20)
Next
GUICtrlCreateTabItem("")
$Button1 = GUICtrlCreateButton("Старт", 200, 200, 75, 25)
GUISetState(@SW_SHOW)
;выполнение функций
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_11()
EndSwitch
WEnd
Func _11()
For $i = 1 To UBound($checkbox) - 1
If GUICtrlRead($checkbox[$i]) = $GUI_CHECKED Then
Execute('_' & $i & '()')
EndIf
Next
EndFunc ;==>_11
Func _1()
MsgBox(0, '', 'Действие к exe1')
EndFunc
Func _2()
MsgBox(0, '', 'Действие к exe2')
EndFunc
Func _3()
MsgBox(0, '', 'Действие к exe3')
EndFunc
Func _4()
MsgBox(0, '', 'Действие к exe4')
EndFunc
Func _5()
MsgBox(0, '', 'Действие к exe5')
EndFunc
Func _test_Ini($aIniSec)
Local $s = Chr(1)
Assign($s, 1, 1)
For $i = 1 To $aIniSec[0]
Assign($aIniSec[$i] & $s, Eval($aIniSec[$i] & $s) + 1, 1)
If Eval($aIniSec[$i] & $s) = 2 Then
If $aIniSec[$i] == '' Then
;MsgBox(0, $LngErr, $LngMs4 & $LngMs5)
Exit
EndIf
MsgBox(0, $LngErr, $LngMs3 & ' "' & $aIniSec[$i] & '"' & $LngMs5)
Exit
EndIf
Next
EndFunc ;==>_test_Ini
Func _Create_ini()
$hFile = FileOpen($Ini, 2)
If $hFile = -1 Then
MsgBox(4096, $LngErr, $LngMs2)
Exit
EndIf
FileWrite($hFile, '[gui]' & @CRLF & _
'Title=Launcher' & @CRLF & _
'Picture = Launcher.jpg' & @CRLF & _
'Margin=25' & @CRLF & _
'FontSize=12' & @CRLF & _
'FontBold=1' & @CRLF & _
'icon=launcher.ico' & @CRLF & _
'GuiBkColor=3F3F3F' & @CRLF & _
'ButColor=' & @CRLF & _
'ConstName=100' & @CRLF & _
'ConstNamePoyasn=100' & @CRLF & _
@CRLF & _
'[1]' & @CRLF & _
'ConstName=название1' & @CRLF & _
'ConstNamePoyasn=пояснение1' & @CRLF & _
'hint=подсказка' & @CRLF & _
'exe1=notepad.exe' & @CRLF & _
'exe2=notepad2.exe' & @CRLF & _
'exe3=notepad2.exe' & @CRLF & _
@CRLF & _
'[2]' & @CRLF & _
'ConstName=название2' & @CRLF & _
'ConstNamePoyasn=пояснение2' & @CRLF & _
'hint=подсказка' & @CRLF & _
'exe1=notepad.exe' & @CRLF & _
'exe2=notepad2.exe' & @CRLF & _
'exe3=notepad2.exe' & @CRLF & _
@CRLF & _
'[3]' & @CRLF & _
'ConstName=название3' & @CRLF & _
'ConstNamePoyasn=пояснение3' & @CRLF & _
'hint=подсказка' & @CRLF & _
'exe1=notepad.exe' & @CRLF & _
'exe2=notepad2.exe' & @CRLF & _
'exe3=notepad2.exe' & @CRLF & _
@CRLF & _
'[4]' & @CRLF & _
'ConstName=название4' & @CRLF & _
'ConstNamePoyasn=пояснение4' & @CRLF & _
'hint=подсказка' & @CRLF & _
'exe1=notepad.exe' & @CRLF & _
'exe2=notepad2.exe' & @CRLF & _
'exe3=notepad2.exe' & @CRLF & _
@CRLF & _
'[5]' & @CRLF & _
'ConstName=название5' & @CRLF & _
'ConstNamePoyasn=пояснение5' & @CRLF & _
'hint=подсказка' & @CRLF & _
'exe1=notepad.exe' & @CRLF & _
'exe2=notepad2.exe' & @CRLF & _
'exe3=notepad2.exe')
FileClose($hFile)
EndFunc ;==>_Create_ini
Так трудно сделать?
madmasles