Вверх ↑
Этот топик читают: Гость
Ответов: 704
Рейтинг: 7
#1: 2006-11-22 22:11:36 ЛС | профиль | цитата
Я наверно уже всех достал своим Clear Type, но эт мне очень нужно!.. Тут попробовал отследить одну прогу, которая это реально меняет и нашол запись в файл:

SET INFORMATION Documents and SettingsNeo
tuser.dat.LOG SUCCESS Length: 16384

Эт типа она лезит в этот ntuser.dat.LOG и что-то там дописует. Я проверил - файл постоянно занят системой и его размер постоянно меняется... По ходу это и есть кеш шрифтов, ток как до него добраться и заставить винду перечитать все настройки из реестра для шрифта?.. Может кто чё подскажет?..
карма: 0

0
Ответов: 5446
Рейтинг: 323
#2: 2006-11-22 22:24:17 ЛС | профиль | цитата
Neo, ntuser.dat - это твой профиль в системе (по сути - кусок реестра), естетсвенно в нём хранится и информация о шрифтах и об их сглаживании.
карма: 1

0
Ответов: 704
Рейтинг: 7
#3: 2006-11-22 22:28:33 ЛС | профиль | цитата
iarspider писал(а):
Neo, ntuser.dat - это твой профиль в системе (по сути - кусок реестра), естетсвенно в нём хранится и информация о шрифтах и об их сглаживании.

А как с ним работать? Как найти эти строки для обновления шрифта и заставить обновиться?..

[size=-2]------ Добавлено в 22:28
Или заставить его перезаписаться при работающей системе?.. Можно такое?
карма: 0

0
Ответов: 2125
Рейтинг: 159
#4: 2006-11-22 22:54:47 ЛС | профиль | цитата
С реестром никогда не работал что-ли? Что-нибудь типа Software/Microsoft/Windows/CurrentVersion/... В конце-концов поищи поиском в regedit имя файла шрифта. После изменений надо всем послать WM_SETTINGCHANGE, и кстати в lparam желательно путь к изменённым ключам указывать.
карма: 1

0
Ответов: 704
Рейтинг: 7
#5: 2006-11-22 23:08:23 ЛС | профиль | цитата
tsdima писал(а):
С реестром никогда не работал что-ли? Что-нибудь типа Software/Microsoft/Windows/CurrentVersion/... В конце-концов поищи поиском в regedit имя файла шрифта. После изменений надо всем послать WM_SETTINGCHANGE, и кстати в lparam желательно путь к изменённым ключам указывать.

code_623

[size=-2]------ Добавлено в 23:07
Я наверно в чём-то туплю, но оно ЖЕ НЕ РАБОТАЕТ!

[size=-2]------ Добавлено в 23:08
Тту может что-то с компонетом для посылки сообщений: у меня при выборе сообщения вот такое в редакторе "$1A{WM_SETTINGCHANGE}"
карма: 0

0
файлы: 1code_623.txt [826B] [227]
Ответов: 704
Рейтинг: 7
#6: 2006-11-22 23:49:12 ЛС | профиль | цитата
tsdima писал(а):
С реестром никогда не работал что-ли? Что-нибудь типа Software/Microsoft/Windows/CurrentVersion/... В конце-концов поищи поиском в regedit имя файла шрифта. После изменений надо всем послать WM_SETTINGCHANGE, и кстати в lparam желательно путь к изменённым ключам указывать.


Да и Lparam принимает же только числовые значения... как4 туда вписать что-то типа:"HKEY_CURRENT_USERControl PanelDesktopFontSmoothingGamma"???
карма: 0

0
Ответов: 704
Рейтинг: 7
#7: 2006-11-23 00:02:46 ЛС | профиль | цитата
Блин... глюки уже или чё-т не пойму... Моя прога тоже дописует этот Ntuser.dat как и другие, но мгновенного результата в отображении шрифтов нету... :-(
карма: 0

0
Ответов: 9906
Рейтинг: 351
#8: 2006-11-23 00:13:59 ЛС | профиль | цитата
Neo писал(а):
Да и Lparam принимает же только числовые значения... как4 туда вписать что-то типа:"HKEY_CURRENT_USERControl PanelDesktopFontSmoothingGamma"???

Neo, тебе давали ссылки http://hiasm.hexshock.com/xf/topic.php?p=35919#P35919
карма: 9

0
Ответов: 2125
Рейтинг: 159
#9: 2006-11-23 10:39:42 ЛС | профиль | цитата
как4 туда вписать что-то типа:"HKEY_CURRENT_USER\Control Panel\Desktop\FontSmoothingGamma
Ну, во-первых, в lparam передаётся в таких случаях адрес строки (указатель на первый символ). А во-вторых, строку надо наверное до HKEY_CURRENT_USER\Control Panel\Desktop сократить, кто его знает с чем ехплорер сравнивает, наверняка не с именем каждого параметра. И в-третьих, не факт, что нужно писать HKEY_CURRENT_USER\..., а не что-то другое. Например в HKEY_LOCAL_MACHINE\Software\Microsoft\
Windows NT\CurrentVersion\IniFileMapping значение DeskTop равно #USR:Control Panel\Desktop, то есть вместо HKEY_CURRENT_USER нужно писать USR или #USR. Но насколько я понимаю, раз есть такой маппинг, можно посылать адрес строки "DeskTop"

Например вот так в InlineCode
SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,0,cardinal(PChar('DeskTop')),SMTO_NORMAL,1000,dwResult);[/code] Не забудь подключить Windows и Messages, а также переменную dwResult: DWORD;
карма: 1

0
Ответов: 704
Рейтинг: 7
#10: 2006-11-23 17:01:28 ЛС | профиль | цитата
Например вот так в InlineCode
SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,0,cardinal(PChar('DeskTop')),SMTO_NORMAL,1000,dwResult);[/code] Не забудь подключить Windows и Messages, а также переменную dwResult: DWORD;

Сори конечно, но в InlineCode я совсем не шарю...:roll: Я так понял, что ты в кусочке "SMTO_NORMAL,1000,dwResult)" указываеш значение параметра реестра как "1000"? Можешь наштопать компонентик (в InlineCode), что бы можно было, допустим, при нажатии на кнопку обновить этот самый кеш реестра?..:wink: То есть я меняю настройки реестра и этот компонентик заставляет их вступить в силу...
карма: 0

0
Ответов: 704
Рейтинг: 7
#11: 2006-11-23 21:47:38 ЛС | профиль | цитата
tsdima, без тебя НЕ ОБОЙДУСЬ!!! Помоги, ПЛИЗ!!!
карма: 0

0
Ответов: 2125
Рейтинг: 159
#12: 2006-11-23 22:44:10 ЛС | профиль | цитата
1000 это таймаут ожидания (1 сек), в случае если приложение не реагирует на SendMessage (не обрабатывает очередь сообщений в течение 1 сек). В примере в MSDN стоит вообще 5 сек.
Я посмотрел, что посылает само окно настройки в панели управления, никакого адреса нет, т.е. можно ноль посылать:

code_628

Главное найти правильный ключик в реестре
карма: 1

0
файлы: 1code_628.txt [611B] [307]
Ответов: 704
Рейтинг: 7
#13: 2006-11-24 00:08:01 ЛС | профиль | цитата
tsdima писал(а):
1000 это таймаут ожидания (1 сек), в случае если приложение не реагирует на SendMessage (не обрабатывает очередь сообщений в течение 1 сек). В примере в MSDN стоит вообще 5 сек.
Я посмотрел, что посылает само окно настройки в панели управления, никакого адреса нет, т.е. можно ноль посылать:

code_628

Главное найти правильный ключик в реестре


Вставил, а толку нету... Ключи те же , что и в проге от майкрософта, а меняется только после перезагрузки...
карма: 0

0
Ответов: 2125
Рейтинг: 159
#14: 2006-11-24 11:23:47 ЛС | профиль | цитата
Ну что-ж, тады только через
SystemParametersInfo(SPI_SETFONTSMOOTHING,bFlagOn,nil,SPIF_SENDCHANGE)[/code] Где-то это уже было.
карма: 1

0
Ответов: 704
Рейтинг: 7
#15: 2006-11-24 23:41:41 ЛС | профиль | цитата
tsdima писал(а):
Ну что-ж, тады только через
SystemParametersInfo(SPI_SETFONTSMOOTHING,bFlagOn,nil,SPIF_SENDCHANGE)[/code] Где-то это уже было.
[/quote]

Спасибки и на этом... Чё ж оно всётаки не получается :-? Вобщем спасибки тебе!
карма: 0

0
15
Сообщение
...
Прикрепленные файлы
(файлы не залиты)