Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Как сделать так, чтобы текст формы появлялся по мере выполнения операций? (http://forum.oszone.net/showthread.php?t=129556)

D_Master 16-01-2009 08:57 1009285

Господа, нуждаюсь в вашей помощи :)
Как сделать так, чтобы текст формы появлялся по мере выполнения операций? Вот пример моей формы:
Код-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


Maza Faka 16-01-2009 10:30 1009340

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. И читаем, читаем справку :)

266903582 16-01-2009 10:57 1009376

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

D_Master 16-01-2009 11:14 1009398

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


Maza Faka 16-01-2009 11:57 1009441

Цитата:

Цитата litus
Да интересно я некого ни чем необьязывал но вы даже непросмотрели мой вопрос!! »

Имейте терпение уважаемый, я скачал ваши текстовые файлы, но ещё не успел их просмотреть, своих дел тоже хватает :)

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

Цитата:

Цитата 266903582
зачем же так изощряться над примерами новичка? »

Где, в моём примере вы увидели изощрения?

Цитата:

Цитата 266903582
Можно просто показать ему на справку:
GUICtrlSetState »

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

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

Цитата:

Цитата D_Master
Ээээ... вы про это? »

Закомментируй строку Opt("GUIOnEventMode", 1) ; Подключаем режим OnEvent

D_Master 16-01-2009 12:00 1009445

Цитата:

Цитата Maza Faka
Закомментируй строку Opt("GUIOnEventMode", 1) ; Подключаем режим OnEvent »

Так ведь у меня там кнопки запуска и закрытия окна, без этого они не срабатывают
Извиняюсь, если глупость сморозил :)

Maza Faka 16-01-2009 16:53 1009674

Цитата:

Цитата 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


D_Master 17-01-2009 13:21 1010444

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


Время: 00:09.

Время: 00:09.
© OSzone.net 2001-