2013-04-28 1 views
0

Я хочу получить список информации (с именем файла и именем реальной темы) установленных тем AERO в ОС Windows 7.Получить список установленных тем Aero

Также нужно изменить текущую тему на одну из установленных тем, но без использования process.start(ThemeFile), поскольку панель персонализации открывается, когда я пытаюсь что ...

Я знаю, что здесь установленные файлы темы, чтобы получить filenames: «C: \ Windows \ Resources \ Themes»

Но я спрашиваю, существует ли лучший способ, чем перечисление содержимого файла этого каталога, потому что мне тоже нужны настоящие имена, и я хочу знать, как измените текущую тему на другую, не открывая панель персонализации.

Пример этого ... У меня есть только две темы Aero на моей ОС.

Имена файлов:

Aero.theme 
Concave_seven.theme 

Но имена темы Wich появляется в панели персонализации являются:

Windows 7 
Concave 7 

Я хочу, чтобы извлечь имена файлов и настоящие имена, чтобы сохранить его в ListBox к измените текущую тему на нужную тему.

Update,

То, что я пытался ...

' Load theme names 
For Each Theme As System.IO.FileInfo In New System.IO.DirectoryInfo(Environment.GetEnvironmentVariable("windir") & "\Resources\Themes").GetFiles("*theme") 
    ComboBox1.Items.Add(Theme.ToString.Substring(0, Theme.ToString.Length - 6)) 
Next 

' Change theme 
' Process.start(ThemeFilename) 
' rundll32.exe Shell32.dll,Control_RunDLL desk.cpl desk,@Themes /Action:OpenTheme /File:"C:\Windows\Resources\Themes\aero.theme" 
+0

что же у пробовали? – FrostyFire

+0

Ничего. Потому что я не нашел информацию о получении настоящих имен темы и о том, как изменить текущую тему на другие «молча». То, что я пробовал, - это простые «directory.Getfiles» и «process.start». – ElektroStudios

+0

http://www.google.ком/# sclient = пси-аб & д = как + изменение + окна + темы + программно + в + Windows + 7 + C% 23 & OQ = как + изменение + окна + темы + программно + в + Windows + 7 + с % 23 & gs_l = hp.3 ... 2600374.2613176.0.2613524.64.39.3.8.9.10.329.5743.0j33j5j1.39.0 ... 0,0 ... 1c.1.11.psy-ab.B96pXO6c01c & = 1 PBX & БАВ = on.2, or.r_qf . & bvm = bv.45645796, d.b2I & fp = 48bc647cd95a1174 & biw = 1277 & bih = 649 – FrostyFire

ответ

0

Ну как кто-нибудь знает, как изменить текущую тему, не открывая селектор темы с rundll32 и т.д ... то здесь мы идем своим личным трюком (которого нет в Google и где угодно, это просто удача).

Первый шаг: отключить функцию DWMCOMPOSITION, например отключить услугу «Темы».

Второй шаг: добавить regkey для указания нужной новой темы, указать файл msstyles, а не файл .theme.

Я делаю это с личным FUNC, но вы можете получить идею:

Reg_Set_Value("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager", "DllName", "C:\windows\resources\themes\aero\aero.msstyles", Microsoft.Win32.RegistryValueKind.String) 

Третий шаг: Повторное включение в состав DWM (услуга «Темы»).

Voilá!

UPDATE:

Также я заметил необходимость изменить это значение на 0 перед включением темы, чтобы обеспечить все цветовые схемы обновляемых:

Reg_Set_Value("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager", "LoadedBefore", "0", Microsoft.Win32.RegistryValueKind.String) 

 Смежные вопросы

  • Нет связанных вопросов^_^