Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как сделать так, чтобы текст формы появлялся по мере выполнения операций?

Ответить
Настройки темы
[решено] Как сделать так, чтобы текст формы появлялся по мере выполнения операций?
D_Master


Сообщения: n/a

Профиль | Цитировать


Господа, нуждаюсь в вашей помощи
Как сделать так, чтобы текст формы появлялся по мере выполнения операций? Вот пример моей формы:
Код-1
Код: Выделить весь код
#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=C:\Documents and Settings\User\Мои документы\MyAutoIt\GUIs\Form2.kxf
$Form2 = GUICreate("Интеграция", 183, 252, 189, 120)
$Label1 = GUICtrlCreateLabel("Начало операции", 8, 24, 92, 17)
$Label2 = GUICtrlCreateLabel("Копирование дистрибутива...", 8, 40, 152, 17)
$Label3 = GUICtrlCreateLabel("Интеграция обновлений...", 8, 72, 136, 17)
$Label4 = GUICtrlCreateLabel("Удаление папок...", 8, 56, 96, 17)
$Label5 = GUICtrlCreateLabel("Изменение контрольной суммы", 8, 88, 168, 17)
$Label6 = GUICtrlCreateLabel("Создание ISO-образа", 8, 104, 113, 17)
$Label7 = GUICtrlCreateLabel("Запись лога....", 8, 120, 79, 17)
$Label8 = GUICtrlCreateLabel("Завершение операции", 8, 136, 118, 17)
$Label9 = GUICtrlCreateLabel("Завершено!", 8, 168, 64, 17)
$Button1 = GUICtrlCreateButton("Отмена", 8, 208, 73, 25, 0)
$Button2 = GUICtrlCreateButton("Закрыть окно", 88, 208, 81, 25, 0)
$Label10 = GUICtrlCreateLabel("Подготовка к интеграции", 8, 8, 134, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd

Допустим, начинается копирование дистрибутива - появляется надпись "Копирование дистрибутива", скопировался, началась интеграция обновлений - появилась соответствующая надпись и т.д.


И ещё вот:
есть код, запускаю (или компилирую), грузит процессор на 50-60%. В чем может быть проблема? (За код прошу не пинать, я только учусь )

Код-2
Код: Выделить весь код
#NoTrayIcon
#include <GUIConstants.au3>
$ConfigFile = @ScriptDir & "\Oem.ini"
$GetDistrPath = IniRead($ConfigFile, "main", "DistrPath", "")
$GetUpdatesPath = IniRead($ConfigFile, "main", "UpdatesPath", "")
$GetNewDistrPath = IniRead($ConfigFile, "main", "CopyToPath", "")
$GetDeleteFolders = IniRead($ConfigFile, "options", "PurgeFolders", "1")
$GetUpdateXP = IniRead($ConfigFile, "options", "UpdatesXP", "4")
$GetDeleteDistrPath = IniRead($ConfigFile, "options", "DeleteOrigDistrPath", "4")
$GetCopyDistr = IniRead($ConfigFile, "options", "CopyDistr", "1")
$GetWriteLog = IniRead($ConfigFile, "options", "LogWrite", "1")
$GetUpdatesSet = IniRead($ConfigFile, "options", "UpdateDistr", "4")

#Region ### START Koda GUI section ### Form=
Opt("GUIOnEventMode", 1)  ; Подключаем режим OnEvent
$Form1_1 = GUICreate("Интеграция обновлений", 505, 343, 191, 113)
$Label1 = GUICtrlCreateLabel("Путь к папке с дистрибутивом", 32, 32, 159, 17)
$DistrPath = GUICtrlCreateInput($GetDistrPath, 288, 24, 161, 21)
$Label2 = GUICtrlCreateLabel("Путь к папке с обновлениями", 32, 56, 156, 17)
$UpdatesPath = GUICtrlCreateInput($GetUpdatesPath, 288, 48, 161, 21)
$Label3 = GUICtrlCreateLabel("Путь копирования дистрибутива", 32, 80, 169, 17)
$NewDistrPath = GUICtrlCreateInput($GetNewDistrPath, 288, 72, 161, 21)
$Group1 = GUICtrlCreateGroup("Пути", 8, 8, 489, 97)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Опции обработки", 8, 120, 489, 169)
;проверяем пункт "Удалить ненужные папки"
If $GetDeleteFolders=1 Then
	$Checkbox1 = GUICtrlCreateCheckbox("Удалить ненужные папки", 32, 144, 153, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetDeleteFolders=4 Then
	$Checkbox1 = GUICtrlCreateCheckbox("Удалить ненужные папки", 32, 144, 153, 17)
EndIf

;Проверяем пункт "Убрать возможность обновления"
If $GetUpdateXP=1 Then
	$Checkbox2 = GUICtrlCreateCheckbox("Убрать возможность обновления", 32, 168, 193, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetUpdateXP=4 Then
	$Checkbox2 = GUICtrlCreateCheckbox("Убрать возможность обновления", 32, 168, 193, 17)
EndIf

;Проверям пункт "Удалить исходный дистрибутив"
If $GetDeleteDistrPath=1 Then
	$Checkbox3 = GUICtrlCreateCheckbox("Удалить исходный дистрибутив", 32, 192, 177, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetDeleteDistrPath=4 Then
	$Checkbox3 = GUICtrlCreateCheckbox("Удалить исходный дистрибутив", 32, 192, 177, 17)
EndIf

;Проверяем пункт "Копировать дистрибутив"
If $GetCopyDistr=1 Then
	$Checkbox4 = GUICtrlCreateCheckbox("Копировать дистрибутив", 32, 216, 153, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetCopyDistr=4 Then
	$Checkbox4 = GUICtrlCreateCheckbox("Копировать дистрибутив", 32, 216, 153, 17)
EndIf

;Проверяем пункт "Писать лог"
If $GetWriteLog=1 Then
	$Checkbox5 = GUICtrlCreateCheckbox("Писать лог", 32, 240, 81, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetWriteLog=4 Then
	$Checkbox5 = GUICtrlCreateCheckbox("Писать лог", 32, 240, 81, 17)
EndIf

;Проверяем пункт "Интегрировать обновления"
If $GetUpdatesSet=1 Then
	$Checkbox6 = GUICtrlCreateCheckbox("Интегрировать обновления", 32, 264, 161, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetUpdatesSet=4 Then
	$Checkbox6 = GUICtrlCreateCheckbox("Интегрировать обновления", 32, 264, 161, 17)
EndIf

GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Начать процесс!", 32, 304, 99, 25, 0)
$Button2 = GUICtrlCreateButton("Выход", 144, 304, 97, 25, 0)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($Button1, "OkButton")
GUICtrlSetOnEvent($Button2, "CLOSEClicked")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

EndSwitch
WEnd


Func OKButton()
  ;проверяем наличие флага на запись лога
  If $GetWriteLog=1 Then
	  $WriteLog="1"
	  $Log=@ScriptDir &"\LOG.TXT"
  Else
	  $WriteLog="2"
  EndIf
  
  ;проверяем, стоит ли галочка в пункте "Копировать дистрибутив". Если нет - обрабатываем исходник.
  If $GetCopyDistr=0 Then
	  $GetNewDistrPath=$GetDistrPath
  EndIf
    
  If FileExists($GetNewDistrPath) Then
	  $EchoDirExist = StringFormat("Внимание! папка %s уже существует!\nПродолжение операции невозможно!", $GetNewDistrPath)
	  MsgBox(64, "Внимание! Папка существует!", $EchoDirExist, 10)
	  Exit
	  EndIf
  If Not FileExists($GetNewDistrPath) Then
	  DirCreate($GetNewDistrPath)
  EndIf
  ;копируем дистрибутив в новую папку
  DirCopy($GetDistrPath, $GetNewDistrPath, 1)
  ;проверяем наличие флага на удаление лишних папок
  If $GetDeleteFolders=1 Then
	  $DeleteFolderNames1 = StringFormat("%s\\Docs", $GetNewDistrPath)
	  $DeleteFolderNames2 = StringFormat("%s\\Dotnetfx", $GetNewDistrPath)
	  $DeleteFolderNames3 = StringFormat("%s\\Support", $GetNewDistrPath)
	  $DeleteFolderNames4 = StringFormat("%s\\ValueAdd", $GetNewDistrPath)
	  DirRemove($DeleteFolderNames1)
	  DirRemove($DeleteFolderNames2)
	  DirRemove($DeleteFolderNames3)
	  DirRemove($DeleteFolderNames4)
  EndIf
  ;проверяем наличие флага на удаление возможности обновления WinXP
  If $GetUpdateXP=0 Then
	$DeleteUpdates1 = StringFormat("%s\\i386\WIN9XMIG", $GetNewDistrPath)
	$DeleteUpdates2 = StringFormat("%s\\i386\WIN9XUPG", $GetNewDistrPath)
	$DeleteUpdates3 = StringFormat("%s\\i386\WINNTUPG", $GetNewDistrPath)
	DirRemove($DeleteUpdates1)
	DirRemove($DeleteUpdates2)
	DirRemove($DeleteUpdates3)
EndIf
  
  MsgBox(0, "GUI Event", "You pressed OK!")
	;прежде тем, как закроется окно, сохраним изменения в конфиг-файл
	$IniWriteDistrPath = GUICtrlRead($DistrPath)
	$IniWriteUpdatesPath = GUICtrlRead($UpdatesPath)
	$IniWriteNewDistrPath = GUICtrlRead($NewDistrPath)
	$IniWritePurgeFolders = GUICtrlRead($Checkbox1)
	$IniWriteUpdatesXP = GUICtrlRead($Checkbox2)
	$IniWriteDeleteOrigPath = GUICtrlRead($Checkbox3)
	$IniWriteCopyDistr = GUICtrlRead($Checkbox4)
	$IniWriteWriteLog = GUICtrlRead($Checkbox5)
	$IniWriteUpdateDistr = GUICtrlRead($Checkbox6)
	If FileExists($ConfigFile) Then
		FileDelete($ConfigFile)
	EndIf
	FileOpen($ConfigFile, 1)
	$IniWriteEcho = StringFormat("[main]\nDistrPath=%s\nUpdatesPath=%s\nCopyToPath=%s\n\n[options]\nPurgeFolders=%s\nUpdatesXP=%s\nDeleteOrigDistrPath=%s\nCopyDistr=%s\nLogWrite=%s\nUpdateDistr=%s\n", $IniWriteDistrPath, $IniWriteUpdatesPath, $IniWriteNewDistrPath, $IniWritePurgeFolders, $IniWriteUpdatesXP, $IniWriteDeleteOrigPath, $IniWriteCopyDistr, $IniWriteWriteLog, $IniWriteUpdateDistr) 
	FileWrite($ConfigFile, $IniWriteEcho)
	FileClose($ConfigFile)
	Exit
EndFunc

Func CLOSEClicked()
	;пользователь решил закрыть окно, но прежде тем, как закроем, сохраним изменения в конфиг-файл
	$IniWriteDistrPath = GUICtrlRead($DistrPath)
	$IniWriteUpdatesPath = GUICtrlRead($UpdatesPath)
	$IniWriteNewDistrPath = GUICtrlRead($NewDistrPath)
	$IniWritePurgeFolders = GUICtrlRead($Checkbox1)
	$IniWriteUpdatesXP = GUICtrlRead($Checkbox2)
	$IniWriteDeleteOrigPath = GUICtrlRead($Checkbox3)
	$IniWriteCopyDistr = GUICtrlRead($Checkbox4)
	$IniWriteWriteLog = GUICtrlRead($Checkbox5)
	$IniWriteUpdateDistr = GUICtrlRead($Checkbox6)
	If FileExists($ConfigFile) Then
		FileDelete($ConfigFile)
	EndIf
	FileOpen($ConfigFile, 1)
	$IniWriteEcho = StringFormat("[main]\nDistrPath=%s\nUpdatesPath=%s\nCopyToPath=%s\n\n[options]\nPurgeFolders=%s\nUpdatesXP=%s\nDeleteOrigDistrPath=%s\nCopyDistr=%s\nLogWrite=%s\nUpdateDistr=%s\n", $IniWriteDistrPath, $IniWriteUpdatesPath, $IniWriteNewDistrPath, $IniWritePurgeFolders, $IniWriteUpdatesXP, $IniWriteDeleteOrigPath, $IniWriteCopyDistr, $IniWriteWriteLog, $IniWriteUpdateDistr) 
	FileWrite($ConfigFile, $IniWriteEcho)
	FileClose($ConfigFile)
	Exit
EndFunc

Отправлено: 08:57, 16-01-2009

 

Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


D_Master
Код-1
Пример:
Код: Выделить весь код
#include <GUIConstantsEx.au3>

$Form2 = GUICreate("Интеграция", 183, 252, 189, 120)

$cLabel_Info = GUICtrlCreateLabel("", 11, 11, 159, 180)

$Button2 = GUICtrlCreateButton("Закрыть окно", 88, 208, 81, 25, 0)

GUISetState(@SW_SHOW)

_SetupProgressSet("Начало операции")
Sleep(1000)
_SetupProgressSet("Копирование дистрибутива...")
Sleep(1000)
_SetupProgressSet("Интеграция обновлений...")
Sleep(1000)
_SetupProgressSet("Удаление папок...")
Sleep(1000)
_SetupProgressSet("Изменение контрольной суммы...")
Sleep(1000)
_SetupProgressSet("Создание ISO-образа...")
Sleep(1000)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _SetupProgressSet($sText)
    Local $iPrevText = GUICtrlRead($cLabel_Info)

    If $iPrevText = "" Then
        GUICtrlSetData($cLabel_Info, $sText & @CRLF)
    Else
        GUICtrlSetData($cLabel_Info, $iPrevText & $sText & @CRLF)
    EndIf
EndFunc   ;==>_SetupProgressSet
Код-2
Зачем ты используешь 2 типа опроса GUI? Отсюда и тормоза. Используй либо GUI MessageLoop Mode либо GUI OnEvent Mode. И читаем, читаем справку

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 10:30, 16-01-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 67
Благодарности: 13

Профиль | Отправить PM | Цитировать


Maza Faka, зачем же так изощряться над примерами новичка? Можно просто показать ему на справку:
GUICtrlSetState
--------------------------------------------------------------------------------
Изменить состояние элемента.
GUICtrlSetState ( controlid, state )
Параметры
controlid Идентификатор элемента, возвращаемый вызовом GUICtrlCreate...
state Значение состояния из Таблицы состояний.
где нас интересуют следующие:
$GUI_SHOW - отобразить элемент GUI.
$GUI_HIDE - скрыть элемент

Отправлено: 10:57, 16-01-2009 | #3

D_Master


Сообщения: n/a

Профиль | Цитировать


Maza Faka, за 1й код спасибо
Цитата Maza Faka:
Зачем ты используешь 2 типа опроса GUI? »
Ээээ... вы про это?
Код: Выделить весь код
If $GetDeleteFolders=1 Then
	$Checkbox1 = GUICtrlCreateCheckbox("Удалить ненужные папки", 32, 144, 153, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetDeleteFolders=4 Then
	$Checkbox1 = GUICtrlCreateCheckbox("Удалить ненужные папки", 32, 144, 153, 17)
EndIf

Отправлено: 11:14, 16-01-2009 | #4


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Цитата litus:
Да интересно я некого ни чем необьязывал но вы даже непросмотрели мой вопрос!! »
Имейте терпение уважаемый, я скачал ваши текстовые файлы, но ещё не успел их просмотреть, своих дел тоже хватает

P.S.
Обязательно постараюсь помочь

Цитата 266903582:
зачем же так изощряться над примерами новичка? »
Где, в моём примере вы увидели изощрения?

Цитата 266903582:
Можно просто показать ему на справку:
GUICtrlSetState »
А на кой создавать кучу одинаковых контролов и изменять их состояние, когда можно использовать всего один?

На вкус и цвет - товарищей нет.
Выложите свой вариант, а D_Master пусть сам решает, какой из примеров ему подходит

Цитата D_Master:
Ээээ... вы про это? »
Закомментируй строку Opt("GUIOnEventMode", 1) ; Подключаем режим OnEvent

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 11:57, 16-01-2009 | #5

D_Master


Сообщения: n/a

Профиль | Цитировать


Цитата Maza Faka:
Закомментируй строку Opt("GUIOnEventMode", 1) ; Подключаем режим OnEvent »
Так ведь у меня там кнопки запуска и закрытия окна, без этого они не срабатывают
Извиняюсь, если глупость сморозил

Отправлено: 12:00, 16-01-2009 | #6


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Цитата D_Master:
Так ведь у меня там кнопки запуска и закрытия окна, без этого они не срабатывают »
Правильно, потому, что они не опрашиваются в этом месте кода:
Код: Выделить весь код
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit


Как я уже писал, нельзя использовать GUIOnEventMode и GUIGetMsg одновременно.
читать дальше »

Код: Выделить весь код
#NoTrayIcon
#include <GUIConstants.au3>
$ConfigFile = @ScriptDir & "\Oem.ini"
$GetDistrPath = IniRead($ConfigFile, "main", "DistrPath", "")
$GetUpdatesPath = IniRead($ConfigFile, "main", "UpdatesPath", "")
$GetNewDistrPath = IniRead($ConfigFile, "main", "CopyToPath", "")
$GetDeleteFolders = IniRead($ConfigFile, "options", "PurgeFolders", "1")
$GetUpdateXP = IniRead($ConfigFile, "options", "UpdatesXP", "4")
$GetDeleteDistrPath = IniRead($ConfigFile, "options", "DeleteOrigDistrPath", "4")
$GetCopyDistr = IniRead($ConfigFile, "options", "CopyDistr", "1")
$GetWriteLog = IniRead($ConfigFile, "options", "LogWrite", "1")
$GetUpdatesSet = IniRead($ConfigFile, "options", "UpdateDistr", "4")

#Region ### START Koda GUI section ### Form=
Opt("GUIOnEventMode", 1) ; Подключаем режим OnEvent
$Form1_1 = GUICreate("Интеграция обновлений", 505, 343, 191, 113)
$Label1 = GUICtrlCreateLabel("Путь к папке с дистрибутивом", 32, 32, 159, 17)
$DistrPath = GUICtrlCreateInput($GetDistrPath, 288, 24, 161, 21)
$Label2 = GUICtrlCreateLabel("Путь к папке с обновлениями", 32, 56, 156, 17)
$UpdatesPath = GUICtrlCreateInput($GetUpdatesPath, 288, 48, 161, 21)
$Label3 = GUICtrlCreateLabel("Путь копирования дистрибутива", 32, 80, 169, 17)
$NewDistrPath = GUICtrlCreateInput($GetNewDistrPath, 288, 72, 161, 21)
$Group1 = GUICtrlCreateGroup("Пути", 8, 8, 489, 97)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Опции обработки", 8, 120, 489, 169)
;проверяем пункт "Удалить ненужные папки"
If $GetDeleteFolders = 1 Then
	$Checkbox1 = GUICtrlCreateCheckbox("Удалить ненужные папки", 32, 144, 153, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetDeleteFolders = 4 Then
	$Checkbox1 = GUICtrlCreateCheckbox("Удалить ненужные папки", 32, 144, 153, 17)
EndIf

;Проверяем пункт "Убрать возможность обновления"
If $GetUpdateXP = 1 Then
	$Checkbox2 = GUICtrlCreateCheckbox("Убрать возможность обновления", 32, 168, 193, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetUpdateXP = 4 Then
	$Checkbox2 = GUICtrlCreateCheckbox("Убрать возможность обновления", 32, 168, 193, 17)
EndIf

;Проверям пункт "Удалить исходный дистрибутив"
If $GetDeleteDistrPath = 1 Then
	$Checkbox3 = GUICtrlCreateCheckbox("Удалить исходный дистрибутив", 32, 192, 177, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetDeleteDistrPath = 4 Then
	$Checkbox3 = GUICtrlCreateCheckbox("Удалить исходный дистрибутив", 32, 192, 177, 17)
EndIf

;Проверяем пункт "Копировать дистрибутив"
If $GetCopyDistr = 1 Then
	$Checkbox4 = GUICtrlCreateCheckbox("Копировать дистрибутив", 32, 216, 153, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetCopyDistr = 4 Then
	$Checkbox4 = GUICtrlCreateCheckbox("Копировать дистрибутив", 32, 216, 153, 17)
EndIf

;Проверяем пункт "Писать лог"
If $GetWriteLog = 1 Then
	$Checkbox5 = GUICtrlCreateCheckbox("Писать лог", 32, 240, 81, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetWriteLog = 4 Then
	$Checkbox5 = GUICtrlCreateCheckbox("Писать лог", 32, 240, 81, 17)
EndIf

;Проверяем пункт "Интегрировать обновления"
If $GetUpdatesSet = 1 Then
	$Checkbox6 = GUICtrlCreateCheckbox("Интегрировать обновления", 32, 264, 161, 17)
	GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
If $GetUpdatesSet = 4 Then
	$Checkbox6 = GUICtrlCreateCheckbox("Интегрировать обновления", 32, 264, 161, 17)
EndIf

GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Начать процесс!", 32, 304, 99, 25, 0)
$Button2 = GUICtrlCreateButton("Выход", 144, 304, 97, 25, 0)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($Button1, "OkButton")
GUICtrlSetOnEvent($Button2, "CLOSEClicked")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	Sleep(100)
WEnd


Func OKButton()
	;проверяем наличие флага на запись лога
	If $GetWriteLog = 1 Then
		$WriteLog = "1"
		$Log = @ScriptDir & "\LOG.TXT"
	Else
		$WriteLog = "2"
	EndIf

	;проверяем, стоит ли галочка в пункте "Копировать дистрибутив". Если нет - обрабатываем исходник.
	If $GetCopyDistr = 0 Then
		$GetNewDistrPath = $GetDistrPath
	EndIf

	If FileExists($GetNewDistrPath) Then
		$EchoDirExist = StringFormat("Внимание! папка %s уже существует!\nПродолжение операции невозможно!", $GetNewDistrPath)
		MsgBox(64, "Внимание! Папка существует!", $EchoDirExist, 10)
		Exit
	EndIf
	If Not FileExists($GetNewDistrPath) Then
		DirCreate($GetNewDistrPath)
	EndIf
	;копируем дистрибутив в новую папку
	DirCopy($GetDistrPath, $GetNewDistrPath, 1)
	;проверяем наличие флага на удаление лишних папок
	If $GetDeleteFolders = 1 Then
		$DeleteFolderNames1 = StringFormat("%s\\Docs", $GetNewDistrPath)
		$DeleteFolderNames2 = StringFormat("%s\\Dotnetfx", $GetNewDistrPath)
		$DeleteFolderNames3 = StringFormat("%s\\Support", $GetNewDistrPath)
		$DeleteFolderNames4 = StringFormat("%s\\ValueAdd", $GetNewDistrPath)
		DirRemove($DeleteFolderNames1)
		DirRemove($DeleteFolderNames2)
		DirRemove($DeleteFolderNames3)
		DirRemove($DeleteFolderNames4)
	EndIf
	;проверяем наличие флага на удаление возможности обновления WinXP
	If $GetUpdateXP = 0 Then
		$DeleteUpdates1 = StringFormat("%s\\i386\WIN9XMIG", $GetNewDistrPath)
		$DeleteUpdates2 = StringFormat("%s\\i386\WIN9XUPG", $GetNewDistrPath)
		$DeleteUpdates3 = StringFormat("%s\\i386\WINNTUPG", $GetNewDistrPath)
		DirRemove($DeleteUpdates1)
		DirRemove($DeleteUpdates2)
		DirRemove($DeleteUpdates3)
	EndIf

	MsgBox(0, "GUI Event", "You pressed OK!")
	;прежде тем, как закроется окно, сохраним изменения в конфиг-файл
	$IniWriteDistrPath = GUICtrlRead($DistrPath)
	$IniWriteUpdatesPath = GUICtrlRead($UpdatesPath)
	$IniWriteNewDistrPath = GUICtrlRead($NewDistrPath)
	$IniWritePurgeFolders = GUICtrlRead($Checkbox1)
	$IniWriteUpdatesXP = GUICtrlRead($Checkbox2)
	$IniWriteDeleteOrigPath = GUICtrlRead($Checkbox3)
	$IniWriteCopyDistr = GUICtrlRead($Checkbox4)
	$IniWriteWriteLog = GUICtrlRead($Checkbox5)
	$IniWriteUpdateDistr = GUICtrlRead($Checkbox6)
	If FileExists($ConfigFile) Then
		FileDelete($ConfigFile)
	EndIf
	FileOpen($ConfigFile, 1)
	$IniWriteEcho = StringFormat("[main]\nDistrPath=%s\nUpdatesPath=%s\nCopyToPath=%s\n\n[options]\nPurgeFolders=%s\nUpdatesXP=%s\nDeleteOrigDistrPath=%s\nCopyDistr=%s\nLogWrite=%s\nUpdateDistr=%s\n", $IniWriteDistrPath, $IniWriteUpdatesPath, $IniWriteNewDistrPath, $IniWritePurgeFolders, $IniWriteUpdatesXP, $IniWriteDeleteOrigPath, $IniWriteCopyDistr, $IniWriteWriteLog, $IniWriteUpdateDistr)
	FileWrite($ConfigFile, $IniWriteEcho)
	FileClose($ConfigFile)
	Exit
EndFunc   ;==>OKButton

Func CLOSEClicked()
	;пользователь решил закрыть окно, но прежде тем, как закроем, сохраним изменения в конфиг-файл
	$IniWriteDistrPath = GUICtrlRead($DistrPath)
	$IniWriteUpdatesPath = GUICtrlRead($UpdatesPath)
	$IniWriteNewDistrPath = GUICtrlRead($NewDistrPath)
	$IniWritePurgeFolders = GUICtrlRead($Checkbox1)
	$IniWriteUpdatesXP = GUICtrlRead($Checkbox2)
	$IniWriteDeleteOrigPath = GUICtrlRead($Checkbox3)
	$IniWriteCopyDistr = GUICtrlRead($Checkbox4)
	$IniWriteWriteLog = GUICtrlRead($Checkbox5)
	$IniWriteUpdateDistr = GUICtrlRead($Checkbox6)
	If FileExists($ConfigFile) Then
		FileDelete($ConfigFile)
	EndIf
	FileOpen($ConfigFile, 1)
	$IniWriteEcho = StringFormat("[main]\nDistrPath=%s\nUpdatesPath=%s\nCopyToPath=%s\n\n[options]\nPurgeFolders=%s\nUpdatesXP=%s\nDeleteOrigDistrPath=%s\nCopyDistr=%s\nLogWrite=%s\nUpdateDistr=%s\n", $IniWriteDistrPath, $IniWriteUpdatesPath, $IniWriteNewDistrPath, $IniWritePurgeFolders, $IniWriteUpdatesXP, $IniWriteDeleteOrigPath, $IniWriteCopyDistr, $IniWriteWriteLog, $IniWriteUpdateDistr)
	FileWrite($ConfigFile, $IniWriteEcho)
	FileClose($ConfigFile)
	Exit
EndFunc   ;==>CLOSEClicked

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 16:53, 16-01-2009 | #7

D_Master


Сообщения: n/a

Профиль | Цитировать


Maza Faka, спасибо за помощь!

Отправлено: 13:21, 17-01-2009 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как сделать так, чтобы текст формы появлялся по мере выполнения операций?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Как сделать так чтобы выделялось только имя файла? Oreshin Microsoft Windows Vista 2 21-04-2009 13:12
[решено] Как сделать, чтобы текст вводимый в InputBox пропечатался самостоятельно позже? sashadeg AutoIt 3 23-02-2009 10:58
Прочее - Как сделать так чтобы комп XP sp2 видел сервак Lunx miha2man Сетевые технологии 2 24-06-2008 17:23
Как сделать так, чтобы ДОС программа загружалась перед Win9x Guest Microsoft Windows 95/98/Me (архив) 6 12-07-2004 09:22




 
Переход