|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Установить и удалить шрифт |
|
Установить и удалить шрифт
|
![]() Ветеран Сообщения: 553 |
Как мне устанновить шрифт ?
Я вобщем делал так. Копирую шрифт в папку Font Создаю пустой файл font.reg Дальше делаю мульти реговый ![]() Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts] Дальше название шрифта Дальше добавляю в реестр ... в реестре запись появляется ... а шрифта в списке нет ![]() Код немогу прилепить я не со своего компьютера. |
|
Отправлено: 20:21, 12-01-2010 |
![]() Старожил Сообщения: 206
|
Профиль | Отправить PM | Цитировать Если ты копируешь шрифт непосредственно в папку ...\WINDOWS\Fons, то в реестр не нужно ничего добавлять, оно само добавится.
|
Отправлено: 21:47, 12-01-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Yashied:
_FileFontInstall(@ScriptDir & "\Ethnocentric.ttf", "AutoIt Font") ConsoleWrite(@error) Func _FileFontInstall($sSourceFile, $sFontDescript="", $sFontsPath="") Local Const $HWND_BROADCAST = 0xFFFF Local Const $WM_FONTCHANGE = 0x1D If $sFontsPath = "" Then $sFontsPath = @WindowsDir & "\fonts" Local $sFontName = StringRegExpReplace($sSourceFile, "^.*\\", "") If Not FileCopy($sSourceFile, $sFontsPath & "\" & $sFontName, 1) Then Return SetError(1, 0, 0) Local $hSearch = FileFindFirstFile($sSourceFile) Local $iFontIsWildcard = StringRegExp($sFontName, "\*|\?") Local $aRet, $hGdi32_DllOpen = DllOpen("GDI32.dll") If $hSearch = -1 Then Return SetError(2, 0, 0) If $hGdi32_DllOpen = -1 Then Return SetError(3, 0, 0) While 1 $sFontName = FileFindNextFile($hSearch) If @error Then ExitLoop If $iFontIsWildcard Then $sFontDescript = StringRegExpReplace($sFontName, "\.[^\.]*$", "") $aRet = DllCall($hGdi32_DllOpen, "Int", "AddFontResource", "str", $sFontsPath & "\" & $sFontName) If IsArray($aRet) And $aRet[0] > 0 Then RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts", _ $sFontDescript, "REG_SZ", $sFontsPath & "\" & $sFontName) EndIf WEnd DllClose($hGdi32_DllOpen) DllCall("User32.dll", "Int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_FONTCHANGE, "int", 0, "int", 0) Return 1 EndFunc |
|
------- Отправлено: 23:49, 12-01-2010 | #3 |
![]() Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Пасиба работает
![]() Но "косячок" один ...если шрифт переименован и в папке Font есть с таким же названием ... то ничего непоставится. Я думаю сравнивать по метаданным (в свойствах файла) - но этоя уже сам. |
Отправлено: 17:50, 15-01-2010 | #4 |
![]() Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать А как правильно удалить шрифт ?
Удаляю из папки и из реестра он всё равно числится в списке ... и даже открывается. |
|
Отправлено: 02:30, 17-01-2010 | #5 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата FlatX007:
Func _FileFontUnInstall($sFontFile) Local Const $HWND_BROADCAST = 0xFFFF Local Const $WM_FONTCHANGE = 0x1D Local $sFontsPath = @WindowsDir & "\fonts" Local $sFontName = StringRegExpReplace($sFontFile, "^.*\\", "") If @extended Then $sFontsPath = StringRegExpReplace($sFontFile, "\\[^\\]*$", "") Local $aRet = DllCall("Gdi32.dll", "Int", "RemoveFontResourceW", "wstr", $sFontsPath & "\" & $sFontName) If IsArray($aRet) And $aRet[0] > 0 Then Local $iEnum = 0, $sRegVal = "", $sRegRead Local $sRegFontsPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" While 1 $iEnum += 1 $sRegVal = RegEnumVal($sRegFontsPath, $iEnum) If @error <> 0 Then ExitLoop $sRegRead = RegRead($sRegFontsPath, $sRegVal) If $sRegRead = $sFontsPath & "\" & $sFontName Or $sRegRead = $sFontName Then RegDelete($sRegFontsPath, $sRegVal) DllCall("User32.dll", "Int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_FONTCHANGE, "int", 0, "int", 0) ExitLoop EndIf WEnd EndIf Return 1 EndFunc |
|
------- Отправлено: 14:29, 17-01-2010 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Как удалить ярлык с рабоч. стола, если в контекстном меню нет пункта Удалить | Denkxx | Microsoft Windows 7 | 5 | 25-09-2009 14:56 | |
Установка - Как удалить с бука Vista и установить XP | dewsar | Microsoft Windows Vista | 2 | 08-04-2009 15:49 | |
Suse/OpenSuSE - Как установить в консоли шрифт KOI8-R по умолчанию | maslinaV | Общий по Linux | 8 | 07-11-2007 12:34 | |
В папке FONTS пропало "Установить шрифт" | Alexandre | Microsoft Windows 95/98/Me (архив) | 7 | 24-10-2007 13:17 | |
Suse/OpenSuSE - Помогите найти пакет consoletools...и в консоли Suse установить шрифт... | maslinaV | Общий по Linux | 0 | 08-10-2007 11:41 |
|