Здрасьте!
Нужна помощь в написании скрипта, который будет делать следующее.
Есть файл config.ini
Вот его содержимое
И есть такой код скрипта (извините если он покажется Вам через чур кривым)
Необходимо чтобы при нажатии (желательно двойное нажатие мышки) в дереве на ссылку "ORL" выводился список только тех людей которые относятся (в файле config.ini) только к "ORL". При нажатии на "RBD" выводился список тех людей которые относятся (в файле config.ini) только к "RBD" и так далее, но нужно все это сделать так, чтобы в дальнейшем можно было править только файл config.ini и не трогать код скрипта.
Тот код скрипта который я прикрепил не подходит т.к. при изменении файла config.ini скрипт перестанет работать. Два последних пункта (Chek и МСК) я сделал для примера, чтобы было понятно что мне нужно.
Так же необходимо, чтобы вот здесь
вместо МСК выводилось название пункта на который мы нажали.
И вот здесь
вместо & $label писалось название из файла config.ini из секции dsc например при нажатии в дереве на "ORL" нужно чтобы написалось Программа 2
В дальнейшем планируется сделать так, чтобы при выборе людей (например я нажал в дереве на МСК скрипт выведет мне людей в правом окне, которые относятся в файле config.ini именно к МСК) и нажатии на кнопку ping производился опрос тех машин которые выведены в правом окне и если ПК доступен ставить галочку в чекбоксе, если есть возможность помогите еще и с этим.
Похожая тема была здесь http://autoit-script.ru/index.php/topic,2588.msg18694.html#msg18694 ,но она мне не помогла
И еще одна просьба сделайте как можно больше комментариев в коде т.к. я очень плохо разбираюсь в autoit
Нужна помощь в написании скрипта, который будет делать следующее.
Есть файл config.ini
Вот его содержимое
Код:
[Check]
path=v:\0\Check\Check.exe
dsc=Программа1
WS12345678901=Иванов Л.С.
WS12345678902=Петров Н.В.
WS12345678903=Сидоров А.И.
[ORL]
path=v:\0\ORL\setup.exe
dsc=Программа 2
WS12345678904=Понаморенко Т.В.
WS12345678905=Лихачев Е.В.
[Per]
path=v:\0\Per\Per\Per.exe
dsc=Программа3
WS12345678906=Козлов.С.
[RBD]
path=v:\0\RBD\rbd.exe
dsc=Программа4
WS12345678907=Понаморенко Л.А.
WS12345678908=ПетровТ.В.
WS12345678909=Сидоров Е.Р.
[Cr]
path=v:\0\Cr\Cr.exe
dsc=Программа5
WS12345678910=Лихачев А.И.
[SP]
path=v:\0\Sp\S.exe
dsc=Программа6
WS12345678911=Петров А.И.
[PD]
path=v:\0\P\P.exe
dsc=Программа7
WS12345678912=Потапов А.И.
[Doc]
path=v:\0\До\s.exe
dsc=Программа8
WS12345678913=Игнатьев А.И.
[AR]
path=v:\0\AR\Kon.msi
dsc=Программа9
WS12345678914=Путов А.И.
И есть такой код скрипта (извините если он покажется Вам через чур кривым)
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
;
Dim $sHeadMsg=""
Dim $nRR=100
Opt('MustDeclareVars', 1)
_Main()
Func _Main()
Local $maintree, $aboutitem, $setupitem, $toolsitem, $CheckXML, $styleitem
Local $cmditem, $miscitem, $descgroup
Local $effectsgroup, $effectstree, $effect1, $effect2, $effect3, $effect4, $effect5
Local $effect6, $effect7, $effect8, $effect9, $effect10, $effect11, $effect12, $effect13, $effect14, $effect15
Local $effect16, $effect17, $effect18, $effect19, $effect20, $effect21
Local $effectsgroup, $effectstree, $effect1, $effect2, $effect3, $effect4, $effect5
Local $stylesgroup, $stylestree, $style1, $style2, $style3, $style4, $style5
Local $aboutlabel, $cancelbutton, $msg
Local $des, $var, $menu1, $var1, $spisok1, $tree1, $label, $pingbutton, $installbutton, $button_tree
$var = IniReadSectionNames("config.ini")
; главное окно программы
$sHeadMsg="Админ " & @UserName
GUICreate( $sHeadMsg, 340, 200 +$nRR, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_GROUP, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU))
; Имена пунктов дерева ...
$maintree = GUICtrlCreateTreeView(10, 10, 120, 150 +$nRR)
$aboutitem = GUICtrlCreateTreeViewItem("About", $maintree)
$setupitem = GUICtrlCreateTreeViewItem("Установка", $maintree)
For $i = 1 To $var[0]
$menu1 = GUICtrlCreateTreeViewItem($var[$i], $setupitem)
Next
$toolsitem = GUICtrlCreateTreeViewItem("Tools", $maintree)
$CheckXML = GUICtrlCreateTreeViewItem("Check", $setupitem)
$styleitem = GUICtrlCreateTreeViewItem("МСК", $setupitem)
$cmditem = GUICtrlCreateTreeViewItem("Commandline", $toolsitem)
$miscitem = GUICtrlCreateTreeViewItem("Misc", $toolsitem)
$descgroup = GUICtrlCreateGroup("Description", 140, 105+$nRR, 180, 55)
GUICtrlSetState(-1, $GUI_HIDE)
$des = GUICtrlCreateLabel("Install..." & $label, 160, 130 +$nRR, 145, 15)
GUICtrlSetState(-1, $GUI_HIDE)
; Имена пунктов списка ...
; ... 1 ...
$effectsgroup = GUICtrlCreateGroup($label, 140, 5, 180, 95 +$nRR)
GUICtrlSetState(-1, $GUI_HIDE)
$effectstree = GUICtrlCreateTreeView(150, 20, 160, 70 +$nRR, BitOR($TVS_CHECKBOXES, $TVS_DISABLEDRAGDROP), $WS_EX_CLIENTEDGE)
GUICtrlSetState(-1, $GUI_HIDE)
For $i = 1 To $var[0]
If $var[$i] = "Check" Then
$var1 = IniReadSection($var, $var[$i])
For $j = 3 To $var1[0][0]
$spisok1 = GUICtrlCreateTreeViewItem($var1[$j][1], $effectstree)
Next
EndIf
Next
; ... 2 ...
$stylesgroup = GUICtrlCreateGroup("МСК", 140, 5, 180, 95 +$nRR)
GUICtrlSetState(-1, $GUI_HIDE)
$tree1 = GUICtrlCreateTreeView(150, 20, 160, 70 +$nRR, BitOR($TVS_CHECKBOXES, $TVS_DISABLEDRAGDROP), $WS_EX_CLIENTEDGE)
GUICtrlSetState(-1, $GUI_HIDE)
For $i = 1 To $var[0]
$var1 = IniReadSection($var, $var[$i])
For $j = 3 To $var1[0][0]
$spisok1 = GUICtrlCreateTreeViewItem($var1[$j][1], $tree1)
Next
Next
; текст при запуске программы
$aboutlabel = GUICtrlCreateLabel("По ночам работают" & @CRLF & "дураки и бездельники!", 160, 80, 160, 40)
; кн "Cancel" ...
$cancelbutton = GUICtrlCreateButton("Cancel", 35, 170 +$nRR, 70, 20)
GUISetState()
; кн "Ping" ...
$pingbutton = GUICtrlCreateButton("Ping", 155, 170 +$nRR, 70, 20)
GUISetState()
; кн "Install" ...
$installbutton = GUICtrlCreateButton("Install", 245, 170 +$nRR, 70, 20)
GUISetState()
; выбраны элементы ...
;~ GUICtrlSetState($effect1, $GUI_CHECKED)
;~ GUICtrlSetState($effect3, $GUI_CHECKED)
;~ GUICtrlSetState($style4, $GUI_CHECKED)
;~ GUICtrlSetState($style5, $GUI_CHECKED)
While 1
$msg = GUIGetMsg()
Select
Case $msg = -3 Or $msg = -1 Or $msg = $cancelbutton
ExitLoop
Case $msg = $aboutitem
Hide_all($stylestree, $stylesgroup, $aboutlabel, $effectsgroup, $descgroup, $des, $effectstree, $tree1)
GUICtrlSetState($aboutlabel, $GUI_SHOW)
Case $msg = $CheckXML
Hide_all($stylestree, $stylesgroup, $aboutlabel, $effectsgroup, $descgroup, $des, $effectstree, $tree1)
$label="CheckXML"
GUICtrlSetState($effectsgroup, $GUI_SHOW)
GUICtrlSetState($descgroup, $GUI_SHOW)
GUICtrlSetState($des, $GUI_SHOW)
GUICtrlSetState($effectstree, $GUI_SHOW)
GUICtrlSetBkColor($effectstree, 0xD0F0F0)
;~ MsgBox(4096, "", $label)
Case $msg = $styleitem
Hide_all($stylestree, $stylesgroup, $aboutlabel, $effectsgroup, $descgroup, $des, $effectstree, $tree1)
GUICtrlSetState($stylesgroup, $GUI_SHOW)
GUICtrlSetState($descgroup, $GUI_SHOW)
GUICtrlSetState($des, $GUI_SHOW)
GUICtrlSetState($tree1, $GUI_SHOW)
GUICtrlSetColor($tree1, 0xD00000)
GUICtrlSetBkColor($tree1, 0xD0FFD0)
Case $msg = $button_tree
;~ $button_tree=$var[$i]
;~ Hide_all($stylestree, $stylesgroup, $aboutlabel, $effectsgroup, $descgroup, $des, $effectstree, $tree1)
;~ GUICtrlSetState($effectsgroup, $GUI_SHOW)
;~ GUICtrlSetState($descgroup, $GUI_SHOW)
;~ GUICtrlSetState($des, $GUI_SHOW)
;~ GUICtrlSetState($effectstree, $GUI_SHOW)
;~ GUICtrlSetBkColor($effectstree, 0xD0F0F0)
;~ MsgBox(4096, "", $var[1])
EndSelect
WEnd
GUIDelete()
Exit
EndFunc ;==>_Main
Func Hide_all($stylestree, $stylesgroup, $aboutlabel, $effectsgroup, $descgroup, $des, $effectstree, $tree1)
GUICtrlSetState($stylestree, $GUI_HIDE)
GUICtrlSetState($stylesgroup, $GUI_HIDE)
GUICtrlSetState($aboutlabel, $GUI_HIDE)
GUICtrlSetState($effectstree, $GUI_HIDE)
GUICtrlSetState($effectsgroup, $GUI_HIDE)
GUICtrlSetState($descgroup, $GUI_HIDE)
GUICtrlSetState($des, $GUI_HIDE)
GUICtrlSetState($effectstree, $GUI_HIDE)
GUICtrlSetState($tree1, $GUI_HIDE)
EndFunc
Необходимо чтобы при нажатии (желательно двойное нажатие мышки) в дереве на ссылку "ORL" выводился список только тех людей которые относятся (в файле config.ini) только к "ORL". При нажатии на "RBD" выводился список тех людей которые относятся (в файле config.ini) только к "RBD" и так далее, но нужно все это сделать так, чтобы в дальнейшем можно было править только файл config.ini и не трогать код скрипта.
Тот код скрипта который я прикрепил не подходит т.к. при изменении файла config.ini скрипт перестанет работать. Два последних пункта (Chek и МСК) я сделал для примера, чтобы было понятно что мне нужно.
Так же необходимо, чтобы вот здесь
Код:
GUICtrlCreateGroup("МСК", 140, 5, 180, 95 +$nRR)
И вот здесь
Код:
$descgroup = GUICtrlCreateGroup("Description", 140, 105+$nRR, 180, 55)
GUICtrlSetState(-1, $GUI_HIDE)
$des = GUICtrlCreateLabel("Install..." & $label, 160, 130 +$nRR, 145, 15)
GUICtrlSetState(-1, $GUI_HIDE)
вместо & $label писалось название из файла config.ini из секции dsc например при нажатии в дереве на "ORL" нужно чтобы написалось Программа 2
В дальнейшем планируется сделать так, чтобы при выборе людей (например я нажал в дереве на МСК скрипт выведет мне людей в правом окне, которые относятся в файле config.ini именно к МСК) и нажатии на кнопку ping производился опрос тех машин которые выведены в правом окне и если ПК доступен ставить галочку в чекбоксе, если есть возможность помогите еще и с этим.
Похожая тема была здесь http://autoit-script.ru/index.php/topic,2588.msg18694.html#msg18694 ,но она мне не помогла
И еще одна просьба сделайте как можно больше комментариев в коде т.к. я очень плохо разбираюсь в autoit