Что нового

Отсылка команд в INI файл

prokazzza

Новичок
Сообщения
160
Репутация
2
Всем привет, с GUI раньше не приходилось работать, помогите создать простейший GUI для отсылки команд в определенный INI файл.

Что необходимо, скрин:

1bf17a9f40a6.png



INI для примера находится D:\1.ini

Заранее благодарю. Или хотя бы намекните где копать.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
что ты подразумеваешь под отсылкой команды в файл?
записать значение? если да то какое?
для начала посмотри функцию
Код:
IniWrite
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Все верно, просто как все это (IniWrite) преобразовать в GUI ???
 

rusreg79

Продвинутый
Сообщения
159
Репутация
57
Все верно, просто как все это (IniWrite) преобразовать в GUI

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 293, 115, 192, 124)
$Input1 = GUICtrlCreateInput("", 12, 16, 273, 21)
$Button1 = GUICtrlCreateButton("Button1", 109, 64, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			IniWrite("D:\1.ini", "section1", "key1", GUICtrlRead($Input1) )

	EndSwitch
WEnd
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Все верно, просто как все это (IniWrite) преобразовать в GUI

Так:

Код:
GUICreate("Заголовок", 290, 201, 192, 124)
GUICtrlCreateLabel("Текст", 8, 48, 64, 27)
$Text = GUICtrlCreateInput("", 8, 80, 273, 21)
$Button1 = GUICtrlCreateButton("Записать", 104, 112, 75, 25)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            Exit
        Case $Button1
            if GUICtrlRead($Text) <> '' Then
				IniWrite('D:\1.ini', 'section', 'key', GUICtrlRead($Text))
				ExitLoop
				Exit
			EndIf
    EndSwitch
WEnd


или так:

Код:
$Text = InputBox('Заголовок', 'Текст', '')
if $Text <> '' Then	IniWrite('D:\1.ini', 'section', 'key', $Text)
if @error Then Exit


или так:

Код:
Do
    $Text = InputBox('Заголовок', 'Текст', '')
    if $Text <> '' Then
		IniWrite('D:\1.ini', 'section', 'key', $Text)
		ExitLoop
		Exit
	EndIf
Until @error


ну, или так:

Код:
GUICreate("Заголовок", 290, 201, 192, 124)
GUICtrlCreateLabel("Текст", 8, 48, 64, 27)
$Text = GUICtrlCreateInput("", 8, 80, 273, 21)
$Button1 = GUICtrlCreateButton("Записать", 104, 112, 75, 25)
GUISetState(@SW_SHOW)

Do
    If GUIGetMsg() = $Button1 then
		IniWrite('D:\1.ini', 'section', 'key', GUICtrlRead($Text))
		Exit
	EndIf
Until GUIGetMsg() = -3
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Спасибо за примеры, небольшое уточнение - как можно добавить в скрипт автоматическое закрытие GUI при нажатие кнопки.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
как можно добавить в скрипт автоматическое закрытие GUI при нажатие кнопки.
Обновил вышеперечисленные примеры, теперь после записи в INI файл скрипт будет закрыватся :ok:
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Нельзя ли как нить добавить в этот код, небольшую автоматизацию действий, к примеру сейчас нужно вводить 192.168.50.10. Можно сделать чтобы вводить нужно было только последную цифру (т.е только номер компьютера).

Код:
$Text = GUICtrlCreateInput("192.168.50.", 8, 80, 273, 21)


не вариант.

Код:
GUICreate("Подключение по IP", 290, 150, 500, 500)
GUICtrlCreateLabel("Введите адрес сервера:", 70, 48, 500, 27)
$Text = GUICtrlCreateInput("", 8, 80, 273, 21)
$Button1 = GUICtrlCreateButton("Сохранить", 104, 112, 75, 25)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            Exit
        Case $Button1
            if GUICtrlRead($Text) <> '' Then
                IniWrite(@ScriptDir&"\Server.ini", 'Configuration', 'Server', GUICtrlRead ($Text))
                ExitLoop
                Exit
            EndIf
    EndSwitch
WEnd
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Используйте элемент управления _GUICtrlIpAddress
Код:
#Include <GuiIPAddress.au3>
$hgui=GUICreate("Подключение по IP", 290, 150, 500, 500)
GUICtrlCreateLabel("Введите адрес сервера:", 70, 48, 500, 27)
$Button1 = GUICtrlCreateButton("Сохранить", 104, 112, 75, 25)
$hIPAddress = _GUICtrlIpAddress_Create ($hgui, 90, 70)
_GUICtrlIpAddress_Set ($hIPAddress, "192.168.50.")
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            Exit
        Case $Button1
            if _GUICtrlIpAddress_Get($hIPAddress) <> '' Then
                IniWrite(@ScriptDir&"\Server.ini", 'Configuration', 'Server', _GUICtrlIpAddress_Get($hIPAddress))
                ExitLoop
                Exit
            EndIf
    EndSwitch
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
VladUs,
Пустая строка возвращает 0.0.0.0
Код:
;...
If _GUICtrlIpAddress_Get($hIPAddress) <> '0.0.0.0' Then
;...
 

VladUs

Скриптер
Сообщения
621
Репутация
181
madmasles [?]
VladUs,
Пустая строка возвращает 0.0.0.0
А что по Вашему она должна возвращать ?
К тому же я просто показал, что существует такой удобный контролл. :smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
VladUs [?]
А что по Вашему она должна возвращать ?
если я правильно понял, имеется в виду, что сравнивать надо с 0.0.0.0 а не пустой строкой.
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Спасибо, но нельзя ли сделать чтобы 192.168.50. не было вообще видно, чтобы вводилось только номер машины.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Код:
GUICreate("Подключение по IP", 290, 150, 500, 500)
GUICtrlCreateLabel("Введите адрес сервера:", 70, 48, 500, 27)
$Text = GUICtrlCreateInput("", 8, 80, 273, 21)
$Button1 = GUICtrlCreateButton("Сохранить", 104, 112, 75, 25)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            Exit
        Case $Button1
            if GUICtrlRead($Text) <> '' Then
                IniWrite(@ScriptDir&"\Server.ini", 'Configuration', 'Server', '192.168.50.' & GUICtrlRead ($Text))
                ExitLoop
                Exit
            EndIf
    EndSwitch
WEnd
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Спасибо, хм странно сеня вроде такой метод пробывал ничего не получалось.
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Такой вопрос, данный кусок скрипта используется как небольшая часть, что нужно добавить чтобы после нажатия на кнопку "Сохранить" этот диалог Гуи закрывался автоматом, а то сейчас оно висит пока скрипт работает, без возможности закрыть.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
prokazzza [?]
закрывался автоматом
Код:
;...
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case -3
			ExitLoop
		Case $Button1
			If GUICtrlRead($Text) <> '' Then
				IniWrite(@ScriptDir & "\Server.ini", 'Configuration', 'Server', '192.168.50.' & GUICtrlRead($Text))
				ExitLoop
			EndIf
	EndSwitch
WEnd
;если больше не будете окно использовать
GUIDelete()
;или, если будете использовать
GUISetState(@SW_HIDE)
;...
 
Верх