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

Показать сообщение отдельно

Аватара для 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