1 (изменено: unKn0wn, 2017-04-23 14:48:49)

Тема: AHK: GUI и работа с удалённым скриптом через ini файлы

Добрый день.
Есть скрипт запущенный на удалённых(несколько компьютеров) РС, который в фоне следит за корпоративной программой, запускает её, закрывает, заставляет выполнять некоторые функции и т.д. Это всё происходит посредством ini файла и команд IniRead и IniWrite. Таким образом я хотел сделать "удалённое управление скриптом клиентом". С этой частью "удалённого управления" проблем не возникло, но для того чтобы этим всем управлять нужен GUI на основном РС, от куда и менять ini файлы на удалённых машинах чтобы удалённые машины выполняли действия с корпоративной программой.
Упёрся в то, что не могу понять как бы так красиво парсить данные с удалённых РС и как красиво их соберать и менять элементы GUI в зависимости от состояния ini файла на удалённой машине.
На картинке в атаче примерно то, как я вижу GUI
Слева лист РС, правее чекбоксы которые отображают текущее состоянии компьютера (из списка на против названия которого стоит этот чекбокс )start_prog(если 1 то ставить чек если 0 анчек), правее edit в котором отображаю значение stop_prog. А, кнопки выполняют действие, т.е. запускают или выключают корпоративную программу посредством изменения ini файла на удалённой машине.
В ini файле расположенном на удалённом РС есть такие записи:

[list_param]
start_prog=0
stop_prog=0

И код для GUI, который должен при запуске опрашивать(iniRead) все компьютеры из списка и отображать информацию в GUI тем самым сразу получить текущее состоянии с удалённых машин(через чекбоксы check\uncheck и поле edit.). И, само собой индивидуальное iniRead и iniWrite посредством выделения РС из listBox и изменения ini через кнопки start, stop.


IniRead, IniRead, сolors.ini, сolors, сolors, %A_Space%
Gui, Add, ListBox, x12 y50 w100 h260 , vListBox Multi, %IniRead%
Gui, Add, CheckBox, x122 y50 w10 h20 , CheckBox
Gui, Add, CheckBox, x122 y70 w10 h20 , CheckBox
Gui, Add, CheckBox, x122 y90 w10 h20 , CheckBox
Gui, Add, CheckBox, x122 y110 w10 h20 , CheckBox
Gui, Add, CheckBox, x122 y130 w10 h20 , CheckBox
Gui, Add, CheckBox, x122 y150 w10 h20 , CheckBox
Gui, Add, CheckBox, x122 y170 w10 h20 , CheckBox
Gui, Add, Edit, x142 y50 w60 h20 , Edit
Gui, Add, Button, x262 y80 w100 h30 , STOP
Gui, Add, Button, x262 y150 w100 h30 , START
; Generated using SmartGUI Creator 4.0
Gui, Show, x409 y210 h379 w479, New GUI Window
Return

F3::
GuiControlGet, ListBox
Loop, parse, ListBox, | 
{
    StringReplace, Label, A_LoopField, %A_Space%, _, All 
    IniRead, stop_prog,			\\%Label%\c$\help\help.ini, list_param, stop_prog
    %Label%_stop_prog = %stop_prog%
    IniRead, start_prog,			\\%Label%\c$\help.ini, list_param, start_prog
	 %Label%_start_prog = %start_prog%
}
Return

GuiClose:
ExitApp

Собственно циклом запарсил, список, достаю, но не пойму как достать инфу из цикла и изменить стостояние чекбокса и изменить значение в edit поле.

Post's attachments

GUI.jpg 20.24 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

2 (изменено: stealzy, 2017-04-23 16:13:35)

Re: AHK: GUI и работа с удалённым скриптом через ini файлы

не могу понять как бы так красиво парсить данные

Не могу понять о чем вы вообще. Справку по IniRead прочтите, парсить ничего не надо.

как достать инфу

stop_prog_machine[A_LoopField]:=stop_prog

изменить стостояние чекбокса

Control Check для существующего; Gui, Add, Checkbox, Checked для нового. Все в справке.

stop_prog := 1
Gui Add, CheckBox, HwndOutputVar , 1
Gui Show
Sleep 1000
box := stop_prog ? "Check" : "Uncheck"
Control % box,,, % "ahk_id" OutputVar

Если надеетесь, что кто-то напишет за вас, выложите весь код, а то неясны детали.

3 (изменено: unKn0wn, 2017-04-24 01:01:54)

Re: AHK: GUI и работа с удалённым скриптом через ini файлы

stealzy пишет:

Не могу понять о чем вы вообще.

У меня есть несколько РС скажем 10шт. На которых посредством AHK я выполняю действия и мониторю состояние корпоративной программы. На всех этих 10 РС есть скрипт и ini файл, в котором я храню данные и через который я управляю поведением корпоративной программой.
Из примера ini файла выше:

[list_param]
start_prog=0
stop_prog=0

Эти параметры находятся в ini файлах на10 РС (параметров в ini файле гораздо больше, для примера и лучшего понимания сути моего вопроса я опустил эти параметры).
Скажем, когда я жму кнопку Start(в гуи на своём основном РС) меняется start_prog на 1 и это запись происходить на выбранных мною в ListBox РС. Запускается моя корп.программа черех AHK скрипт который на этих РС запущен всегда и читает каждые 2сек состояние параметров в ini файле.
Т.е, примитивная реализация через AHK клиент-сервер работы со скриптами.

Встрял на этом моменте:
Как получить данные с 10 РС? Не писать же на каждую машину статический код такого типа:


IniRead, stop_prog,			\\PC1\c$\help\help.ini, list_param, stop_prog
IniRead, start_prog,			\\PC1\c$\help.ini, list_param, start_prog

IniRead, stop_prog,			\\PC2\c$\help\help.ini, list_param, stop_prog
IniRead, start_prog,			\\PC2\c$\help.ini, list_param, start_prog

IniRead, stop_prog,			\\PC3\c$\help\help.ini, list_param, stop_prog
IniRead, start_prog,			\\PC3\c$\help.ini, list_param, start_prog

IniRead, stop_prog,			\\PC4\c$\help\help.ini, list_param, stop_prog
IniRead, start_prog,			\\PC4\c$\help.ini, list_param, start_prog

IniRead, stop_prog,			\\PC5\c$\help\help.ini, list_param, stop_prog
IniRead, start_prog,			\\PC5\c$\help.ini, list_param, start_prog

И так далее... Немного не правильно, что-ли.  Получается куча лишнего кода, которого можно избежать если парсить инфу циклом из listbox'a и подставлять имя РС в путь IniRead(скрипты на тачках расположены по одинаковым путям).
Следовательно вместо огромного количества строк кода, будет цикл, который и будет подставлять имя РС, которые уже заведомо известны моему GUI т.к. я имею список РС в ini файле.
И будем иметь примерно такой результат:


IniRead, stop_prog,			\\%pcNameFromList%\c$\help\help.ini, list_param, stop_prog
IniRead, start_prog,			\\%pcNameFromList%c$\help.ini, list_param, start_prog

И соответственно надо каким-то образом записывать параметры в эти ini файлы на удалённых машинах, но пока я ещё не придумал как это должно выглядеть.
Собственно вопрос в том, как это реализовать...

4

Re: AHK: GUI и работа с удалённым скриптом через ini файлы

Короче говоря, Вам нужно:
а) давать команду скрипту, который запущен на удалённом компьютере,
б) контролировать в режиме реального времени статус того скрипта, верно?

5

Re: AHK: GUI и работа с удалённым скриптом через ini файлы

Да, по сути именно так.

6 (изменено: stealzy, 2017-04-24 07:52:30)

Re: AHK: GUI и работа с удалённым скриптом через ini файлы

Я вам еще первым сообщением массивы предлагал.

i:=0, stop_prog_:=[]
Loop 5 {
	stop_prog_[A_Index] := i++
}
MsgBox % stop_prog_[3]

; stop_prog_:={}
stop_prog_["MyComp"] := 1
MsgBox % stop_prog_["MyComp"]

ListBox := "PC1|PC2|PC10"
Loop parse, ListBox, |
{
	IniRead, stop_prog, % "\\" A_LoopField "\c$\help\help.ini", list_param, stop_prog
	stop_prog_[A_LoopField] := stop_prog
}
MsgBox % stop_prog_["PC2"]

7

Re: AHK: GUI и работа с удалённым скриптом через ini файлы

AHK: Портовый приёмник
AHK: Прослушивание сетевых пакетов, реагирование на получение пакета
AHK: Отправка сообщений в порт
AKH-G: Передача данных с нескольких компьютеров на один

8

Re: AHK: GUI и работа с удалённым скриптом через ini файлы

stealzy пишет:

Я вам еще первым сообщением массивы предлагал.

Спасибо, буду пробовать.

2ypppu, реализация через сокеты мне тоже больше нравится, но у меня не получилось завести эти примеры... Да и проблемы с autohotkey_L испытывал...