Войти

Показать полную графическую версию : Свойства экрана — установка шрифта.


semiono
18-12-2010, 05:09
ShellExecute('control','desk.cpl,,2')

ProgressOn('','','',-1,-1,1)
For $i = 10 to 100 step 10
Sleep(50)
ProgressSet($i)
$x = WinGetHandle('#32770','Display Properties')
Next

If WinExists($x) Then
WinActivate($x)
WinMove($x,'',-404,25)
ControlFocus($x,'','ComboBox3')
ControlCommand($x,'','ComboBox3','SelectString','Tahoma')
ControlClick($x,'','Button3')
EndIf

; на всякий случай чтобы зачистить зависший rundll32.exe, можно раскоментировать
; Sleep(1000)
; $PID = ProcessExists('rundll32.exe')
; If $PID Then ProcessClose($PID)

Вот накатал для desk.cpl скриптик. Для русской системы надо изменить название элементов GUI.
Если что не так поправьте.
:beer:

Iska
18-12-2010, 09:29
semiono, кроме «Вашего» «rundll32.exe» в системе может быть ещё несколько «чужих».

И название темы я бы поменял: под «установкой шрифта» обычно понимают именно установку шрифта в систему.

Creat0R
18-12-2010, 13:44
Если что не так поправьте. »
Всё не так.

У меня на первоначальном диалоге нет Combo с выбором шрифтов.
И зачем в цикле получать Handle окна?

В первом сообщений нет описаний, что делает скрипт.

semiono
19-12-2010, 00:09
В первом сообщений нет описаний, что делает скрипт. »
Скрипт выбирает шрифт для установленной темы Windows XP.
Кстати, я сейчас понял что там не так! Шрифт предоставляется самой темой, а вернее стилем *.msstyles,
поэтому понятно, что в Windows Classic.theme - вообще нету никаких Arial, Lucida, Tahoma.

http://b.imagehost.org/0973/Snap2.png

Вообщем меня попросили, я наспех написал скрипт, возможно что продолжение требуется.
По кнопке "Дополонительтно", там имеются ещё переключатели, я предполагаю,
что они именно влияют на настройки включаемые в *.theme файл.

Вопрос вообще был в том, как автоматически применить установку шрифта в реестре без перезагрузки.

И зачем в цикле получать Handle окна?
Потому что я ламер :)

Однако то что написал работает железно, при конкретных свойствах.
Если кому надо можно продолжить. Мне самому это тоже интересно, похожий скрипт меня уже выручал с установкой самой темы msstyle.

Creat0R
19-12-2010, 00:46
как автоматически применить установку шрифта в реестре без перезагрузки. »
Не знаю на счёт перезагрузки, но кажется тут это делается:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes

semiono
19-12-2010, 05:56
Если со шрифтами может быть не всё однозначно, то у меня есть задача более конкретная.
Например, меня всегда раздражает тень под меню:
Display Properties/Appearance/Effects/> (извиняюсь за английский)
Show shadows under menu [убрать галочку]
Это тоже можно изменить в реестре
HKEY_CURRENT_USER\Control Panel\Desktop\UserPreferencesMask
и так же безрезультатно без перезагрузки.
Так что если desk.cpl это единственный путь, то напишите скрипт чтоб хорошо работал.
Локализацию я сам изменю, по-русски пойдёт!
:)

semiono, кроме «Вашего» «rundll32.exe» в системе может быть ещё несколько «чужих». »
Если они вызваны другим процессом, то сами запустятся снова, на практике наблюдал когда драйверы устанавливаются,
то их практически нельзя остановить, всё остальное мусор. Если rundll32.exe критический то он заново откроется.




© OSzone.net 2001-2012