2013-04-28 25 views
0

我想獲取Windows 7操作系統中已安裝AERO主題的信息列表(包含文件名和真實主題名稱)。獲取已安裝的Aero主題列表

此外,我需要將當前主題更改爲安裝的主題之一,但沒有因爲個性化面板打開,當我嘗試,使用process.start(ThemeFile) ...

我知道這裏是安裝的主題文件,以獲得文件名:「C:\ Windows \ Resources \ Themes」

但我問是否存在比列出該目錄的文件內容更好的方法因爲我也需要真實姓名,我想知道如何在不打開個性化面板的情況下將當前主題更改爲其他主題。

一個例子...我的操作系統上只有兩個Aero主題。

的文件名是:

Aero.theme 
Concave_seven.theme 

但主題名稱至極出現在個性化面板是:

Windows 7 
Concave 7 

我想中檢索文件名和真實姓名,將其存儲在一個列表框中更改所需主題的當前主題。

更新

我已經試過......

' 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

什麼具有u試過嗎? – FrostyFire 2013-04-28 21:47:47

+0

Nothing'原因我沒有找到有關獲取REAL主題名稱的信息,以及如何將當前主題更改爲其他「默默」。我試過的是一個簡單的「directory.Getfiles」和「process.start」。 – ElektroStudios 2013-04-28 21:50:06

+0

http://www.google。COM /#sclient = PSY-AB&Q =如何+變化+窗口+主題+編程+在+窗口+ 7 + C%23&OQ =如何+變化+窗口+主題+編程+在+窗口+ 7 + C %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&PBX = 1&BAV = on.2,or.r_qf 。&bvm = bv.45645796,d.b2I&fp = 48bc647cd95a1174&biw = 1277&bih = 649 – FrostyFire 2013-04-28 22:00:05

回答

0

好喜歡任何人知道如何改變當前的主題,而不RUNDLL32等打開主題選擇...然後在這裏我們走我的個人訣竅(這不是谷歌和任何地方,這是純粹的運氣)。

第一步:禁用DWMCOMPOSITION,例如禁用「Themes」服務。

第二步:添加一個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) 
相關問題