Что нового

Твикер интерфейса системы

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
Danya98

Файл scale.au3
Код:
; Оригинал
If @OSVersion = "WIN_XPe" Or @OSVersion = "WIN_XP" Or @OSVersion = "WIN_VISTA" Then
	$successful = RegWrite("HKLM\SYSTEM\ControlSet001\Hardware Profiles\0001\Software\Fonts", "LogPixels", "REG_DWORD", $esidpi)
ElseIf @OSVersion = "WIN_VISTA" Then ; ошибка, это никогда не сработает, потому что есть в верхнем условии
	$successful = RegWrite("HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current\Software\Fonts", "LogPixels", "REG_DWORD", $esidpi)
Else
	$successful = RegWrite("HKCU\Control Panel\Desktop", "LogPixels", "REG_DWORD", $esidpi)
EndIf
; Улучшенное, так читабельней
Switch @OSVersion
	Case "WIN_XPe", "WIN_XP", "WIN_VISTA"
		$successful = RegWrite("HKLM\SYSTEM\ControlSet001\Hardware Profiles\0001\Software\Fonts", "LogPixels", "REG_DWORD", $esidpi)
	Case "WIN_VISTA" ; ошибка, это никогда не сработает, потому что есть в верхнем условии
		$successful = RegWrite("HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current\Software\Fonts", "LogPixels", "REG_DWORD", $esidpi)
	Case Else
		$successful = RegWrite("HKCU\Control Panel\Desktop", "LogPixels", "REG_DWORD", $esidpi)
EndSwitch

Файл buttons.au3
Код:
Func restoreDefault()
	SetError(0) ; @error в начале функции равен 0 и нет смысла его обнулять


Файл fonts.au3 и buttons.au3
Код:
; Оригинал
RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "BorderWidth", "REG_SZ", "-15")
RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "CaptionFont", "REG_BINARY", "0x000000")
; и далее 369 таких же строк

; Улучшенное, так компактней и сразу видно что путь один без вычитывания всех путей
$s = "HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics" ; Ну или так $sMetrics
RegWrite($s, "BorderWidth", "REG_SZ", "-15")
RegWrite($s, "CaptionFont", "REG_BINARY", "0x000000")




Добавлено:
Сообщение автоматически объединено:

Danya98
Посмотри вариант от LarryDalooza - получение шрифтов.
А вот мой вариант с получением из реестра напрямую.
Код:
Local $sRes, $bMtr
Local $aRegFont[7] = [6, 'CaptionFont', 'IconFont', 'MenuFont', 'MessageFont', 'SmCaptionFont', 'StatusFont']
For $i = 1 To 5
	$bMtr = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", $aRegFont[$i])
	$sRes &= @CRLF & StringFormat("%-13s", $aRegFont[$i])  & @TAB & _Get_FontName($bMtr)
	$sRes &= @TAB & _Get_FontSize($bMtr)
Next
MsgBox(0, 'Сообщение', $sRes)

Func _Get_FontName($bMtr)
	Local $sStr, $iPos
	$bMtr = BinaryMid ($bMtr, 28, 60)
	$sStr = BinaryToString ($bMtr, 3)
	$iPos = StringInStr($sStr, Chr(0))
	Return StringLeft($sStr, $iPos - 1)
EndFunc

Func _Get_FontSize($bMtr)
	$bMtr = BinaryMid ($bMtr, 1, 1)
	Local $sStr = String($bMtr)
	Return Abs(Number($sStr) - 256)
EndFunc
Думаю если извлечь получилось, то и вставить не трудно. Ведь у тебя просто импортируется твой конфиг без настройки, а ведь можно выбрать шрифт и преобразовать бинарную строку для реестра.


Добавлено:
Сообщение автоматически объединено:

Если захочешь сделать экспорт реестра в качестве бэкапа, перед тем как вносить изменения, то есть _RegExport из _RegFunc.au3 от wraithdu. Там же и мой вариант с разницей что формирует данные в переменную и можно соединять данные из разных разделов, перед тем как сохранить.
 
Верх