Ветеран
Сообщения: 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
|