这份文档将主要讨论Windows 7,Windows Vista和Windows XP中使用的主题文件(.theme)的语言格式。一个.theme文件实质上是一个分段记录特定桌面可视化效果设定的.ini文件。 在此.ini中,方括号([])内记录的为段落名。
Windows 7 支持包括幻灯片桌面背景在内的很多新功能。在早期版本Windos中,这些无法被识别的段落将被系统忽略。Windows 7还将支持全新的.themepack格式以便用户共享主题。主题仅在家庭版、商务版或更高等级的Windows 7内的个性化控制面板或安装了桌面组件的Windows Server 2008 R2中进行选择。
本文涉及一下主题
创建主题文件
主题文件的介绍
[Theme]
[Control Panel/Colors]
[Control Panel/Cursors]
[Control Panel/Desktop]
[Slideshow]
[Metrics]
[Visual Styles]
[Sounds] 和 [AppEvents] (Sounds)
[Boot]
[MasterThemeSelector]
主题文件范例
安装主题文件
主题包
相关内容
创建主题文件
主题文件(.theme)能帮你改变桌面特定组件的外观。你可以通过一下两种方式创建或修改一个.theme主题文件:
- 在控制面板中修改个性化或显示设定,并保存为.theme主题文件。你可以在Windows帮助中查看详细介绍。
- 手动创建一个.theme主题文件来对你的主题进行更精细的设定。
为了使别人也能使用你的主题文件,除了.theme文件,你还需要提供背景图片,屏幕保护,图标文件等相关资源。你可以通过使用主题包来实现这一目的。
主题文件的介绍
主题文件由数个必要和非必要语段组成。以下我们将详细介绍.theme主题文件的各个组成部分并提供样例来展示如何对不同组件进行特定修改。
[Theme]
Note 这一部分为可选语段。如果你的.theme主题文件中不包括这一部分,系统会自动采用默认设定。
[Theme]段的作用是设定自制主题的名称以及确定主题的预览图和图标。
[Theme]段的第一部分包含一下两个组件:
组件
|
描述
|
DisplayName=name 或 DisplayName=@module,-stringId 例: DisplayName=@themeui.dll,-2013 | DisplayName为该主题文件在个性化控制面板中显示的名字。它可以是一串字符,也可以是一个变量。 这一部分为可选参数。如果.theme主题文件中缺少这个参数,主题名将为.theme主题文件的文件名。 |
BrandImage=path to image 例: BrandImage=c:/Fabrikam/brand.png | Windows 7 BrandImage定义了主题文件在个性化控制面板中预览图的详细路径。 该预览图必须是一个PNG文件,由于图片大小将被强制缩放到80*240像素,所以我们建议你提供该尺寸的图片。 Theme gallery为预览图中的透明部分。 这一部分为可选参数。如果.theme主题文件中缺少这个参数,主题文件将没有预览。 |
以下两个例子将展示如何通过.theme主题文件设置 我的电脑图标。
[CLSID/{20D04FE0-3AEA-1069-A2D8-08002B30309D}/DefaultIcon] DefaultValue=%ProgramFiles%/Fabrikam/Computer.ico |
; Computer [CLSID/{20D04FE0-3AEA-1069-A2D8-08002B30309D}/DefaultIcon] DefaultValue=%ProgramFiles%/Fabrikam/MyApp.exe,0 |
; Computer [CLSID/{20D04FE0-3AEA-1069-A2D8-08002B30309D}/DefaultIcon] DefaultValue=%SystemRoot%/System32/imageres.dll,-109 ; Documents [CLSID/{59031A47-3F72-44A7-89C5-5595FE6B30EE}/DefaultIcon] DefaultValue=%SystemRoot%/System32/shell32.dll,-235 ; Network [CLSID/{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}/DefaultIcon] DefaultValue=%SystemRoot%/System32/imageres.dll,-25 ; Recycle Bin [CLSID/{645FF040-5081-101B-9F08-00AA002F954E}/DefaultIcon] Full=%SystemRoot%/System32/imageres.dll,-54 Empty=%SystemRoot%/System32/imageres.dll,-55 |
注意 这一部分为可选语段. 如果你的.theme主题文件中不包含这一部分,系统将使用默认设置。如果你的主题将使用Aero风格,请尽量避免对此段的默认值进行修改。
在Windows中,滚动条、文字、按键等组件的颜色是可以调整的。在.theme主题文件中,可以设置控制这些组件颜色的RGB值。这些值将代替可视效果的默认值在Windows经典、 Windows 7基本或高对比度主题中被系统显示。
以下样例为设置颜色的方法。
[Control Panel/Colors] ActiveTitle=10 36 106 Background=166 202 240 Hilight=10 36 106 HilightText=255 255 255 TitleText=255 255 255 Window=255 255 255 WindowText=0 0 0 Scrollbar=212 208 200 InactiveTitle=128 128 128 Menu=212 208 200 WindowFrame=0 0 0 MenuText=0 0 0 ActiveBorder=212 208 200 InactiveBorder=212 208 200 AppWorkspace=128 128 128 ButtonFace=212 208 200 ButtonShadow=128 128 128 GrayText=128 128 128 ButtonText=0 0 0 InactiveTitleText=212 208 200 ButtonHilight=255 255 255 ButtonDkShadow=64 64 64 ButtonLight=212 208 200 InfoText=0 0 0 InfoWindow=255 255 225 GradientActiveTitle=166 202 240 GradientInactiveTitle=192 192 192 |
注意 这一部分为可选语段。如果你的.theme主题文件中不包含这一部分,系统将使用默认鼠标指针。
在主题文件中,鼠标指针的修改也是可能的。为了做到这点,你需要创建.cur指针文件来替代系统默认指针。以下样例为如何建立一个包含自定义指针设定的名为 Sports的.theme主题文件。
[Control Panel/Cursors] Arrow=%SystemRoot%/sports_arrow.cur Help=%SystemRoot%/sports_help.cur AppStarting=%SystemRoot%/sports_wait.ani Wait=%SystemRoot%/sports_busy.ani NWPen=%SystemRoot%/sports_pen.cur No=%SystemRoot%/sports_no.cur SizeNS=%SystemRoot%/sports_size_ns.cur SizeWE=%SystemRoot%/sports_size_we.cur Crosshair=%SystemRoot%/sports_cross.cur IBeam=%SystemRoot%/sports_beam.cur SizeNWSE=%SystemRoot%/sports_size_nwse.cur SizeNESW=%SystemRoot%/sports_size_nesw.cur SizeAll=%SystemRoot%/sports_move.cur UpArrow=%SystemRoot%/sports_up.cur DefaultValue=Windows default |
注意 这一部分为必要语段。如果你的.theme主题文件中不包含这一部分,系统将忽略你的主题,该主题在控制面板中将不被显示。
你可以建立一个自定义桌面背景并指定一个图片路径。以下样例为如何自定义桌面外貌。
[Control Panel/Desktop] Wallpaper=%WinDir%/web/wallpaper/Windows/img0.jpg ; 图片指向的路径可以是一个.bmp、.gif、.jpg、.png或.tif文件 TileWallpaper=0 ; 0: 桌面背景图片将不会被平铺 ; 1: 桌面背景图片将会被平铺 WallpaperStyle=2 ; 0: 如果TileWallpaper=0图片将被剧中显示,当TileWallpaper=1时,图片将被平铺 ; 2: 图片将被拉伸以适合屏幕大小 ; 6: 图片将保持原宽高比缩放以适合屏幕大小 ; 10: 图片将保持原宽高比缩放以适合屏幕大小,超出部分将被裁减(Windows 7或更新版本) |
Windows 7或更新版本
Note 这一部分为可选语段。如果你的.theme主题文件中不包含这一部分,系统将使用在[Control Panel/Desktop]中指定的图片作为桌面背景。如果你的文件中包含这部分,你在这里必须指定幻灯片播放设置。
你的桌面背景可以是一个本地、来自服务器或来自RSS的图片组成的幻灯片。[Slideshow]部分包含以下参数:
参数 | 描述 |
Interval=时间(微秒) | 必须包含。Interval是定义图片切换时间的值,单位是微秒。 |
Shuffle=0或者1 | 必须包含。 Shuffle定义了幻灯片的播放顺序是否为乱序。 0 = 禁用 1 = 使用 |
RSSFeed=RSS新闻的URL地址 | 当ImagesRootPath没被定义时为必要参数。RSSFeed指定了一个RSS作为幻灯片桌面背景。为了使它能正常工作,你所使用的高分辨率图像必须符合Windows RSS平台所使用的标准. 由于这一限制,包含RSS的.theme主题文件只能被手动创建。 注意 你不能同时定义RSSFeed和ImagesRootPath。 |
ImagesRootPath=背景图片文件夹的路径 | 当RSSFeed没被定义时为必要参数。ImagesRootPath定义了存放幻灯片桌面背景图片的文件夹。不包括指定路径子文件夹下的图片。 ImagesRootPath支持包含环境变量的路径。 注意 你不能同时定义RSSFeed和ImagesRootPath。 |
ItemNPath=指定图片 | 用于ImagesRootPath参数。 ItemNPath定义了指定图片的路径,从而实现仅包含指定文件夹下部分图片的幻灯片桌面。在不指定任何路径的情况下,所有在ImagesRootPath路径下的图片及完成并安装.theme主题文件后追加的图片都将被用于幻灯片桌面背景。 ItemNPath支持包含环境变量的路径。N可以是0, 1, 2等数字 |
[Slideshow] Interval=1800000 Shuffle=1 ImagesRootPath=%SystemRoot%/Web/Wallpaper |
[Slideshow] Interval=1800000 Shuffle=1 ImagesRootPath=%ProgramFiles%/fabrikam/wallpaper Item0Path=%ProgramFiles%/fabrikam/wallpaper/ocean.jpg Item1Path=%ProgramFiles%/fabrikam/wallpaper/mountain.jpg Item2Path=%ProgramFiles%/fabrikam/wallpaper/river.jpg |
将此样例拷贝到文字编辑器中。
用你想要在个性化自定义面板中显示的名字替换{themename}。
将{rssfeedurl}以适用RSS的完整地址替换。
将文件以".theme"扩展名保存。
[Theme] DisplayName={themename} [Slideshow] Interval=1800000 Shuffle=1 RssFeed={rssfeedurl} [Control Panel/Desktop] TileWallpaper=0 WallpaperStyle=10 Pattern= [Control Panel/Cursors] AppStarting=%SystemRoot%/cursors/aero_working.ani Arrow=%SystemRoot%/cursors/aero_arrow.cur Crosshair= Hand=%SystemRoot%/cursors/aero_link.cur Help=%SystemRoot%/cursors/aero_helpsel.cur IBeam= No=%SystemRoot%/cursors/aero_unavail.cur NWPen=%SystemRoot%/cursors/aero_pen.cur SizeAll=%SystemRoot%/cursors/aero_move.cur SizeNESW=%SystemRoot%/cursors/aero_nesw.cur SizeNS=%SystemRoot%/cursors/aero_ns.cur SizeNWSE=%SystemRoot%/cursors/aero_nwse.cur SizeWE=%SystemRoot%/cursors/aero_ew.cur UpArrow=%SystemRoot%/cursors/aero_up.cur Wait=%SystemRoot%/cursors/aero_busy.ani DefaultValue=Windows Aero Link= [VisualStyles] Path=%SystemRoot%/resources/themes/Aero/Aero.msstyles ColorStyle=NormalColor Size=NormalSize ColorizationColor=0X6B74B8FC Transparency=1 [MasterThemeSelector] MTSM=DABJDKT |
注意 这一部分为可选语段。如果你的.theme主题文件中不包含这一部分,系统使用默认可视化风格设定。
你可以在.theme主题文件中指定一个系统尺寸。系统尺寸定义了显示的组件的大小,例如边框宽度,图标高度或滚动条宽度等。NonclientMetrics和IconMetrics均为二进制结构,其结构由winuser.h中的NONCLIENTMETRICS和ICONMETRICS定义。以下样例为如何自定义系统尺寸。
[Control Panel/Desktop/WindowMetrics] [Metrics] IconMetrics=76 0 0 0 139 0 0 0 139 0 0 0 1 0 0 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 119 0 0 7 0 0 0 0 0 216 31 7 0 28 52 1 1 216 31 7 0 176 36 1 1 NonclientMetrics=84 1 0 0 1 0 0 0 16 0 0 0 16 0 0 0 18 0 0 0 18 0 0 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 188 2 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 0 0 0 15 0 0 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 188 2 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 0 80 37 11 0 0 0 0 0 140 221 6 0 227 115 247 119 2 40 11 0 7 0 0 0 18 0 0 0 18 0 0 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 0 0 0 0 0 60 222 6 0 50 71 252 119 120 1 7 0 76 73 252 119 8 6 7 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 119 0 0 7 0 120 1 7 0 120 1 7 0 40 37 11 0 120 1 7 0 120 1 7 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 0 0 0 0 0 84 97 104 111 109 97 0 0 92 1 0 0 136 4 0 0 40 37 1 1 0 0 7 0 184 221 6 0 46 75 232 119 |
注意 这一部分为必要语段。如果你的.theme主题文件中不包含这一部分,系统将忽略你的主题,该主题在控制面板中将不被显示。
你可以通过.mstheme文件提供关于桌面组件大小及颜色的特定信息。.theme主题文件中的color和size语段可由.mstheme中的相关信息替代,并可做更为细致的修改。这些文件需在.theme主题文件中的visual styles语段中指定。以下 visual styles语段样例。
[VisualStyles] Path=%ResourceDir%/Themes/Aero/Aero.msstyles ColorStyle=NormalColor Size=NormalSize |
Windows Vista / Windows 7: 当路径指向为Aero.msstyle,你可以参考以下样例,指定想要的玻璃化窗体颜色。
Windows 7: 当路径指向为Aero.msstyle,你还可以参考以下样例,指定想要的玻璃化窗体透明度。
[VisualStyles] Path=%SystemRoot%/resources/Themes/Aero/Aero.msstyles ColorStyle=NormalColor Size=NormalSize ColorizationColor=0X7298844C Transparency=1 |
以下样例为Windows 7基本主题的VisualStyles语段。
[VisualStyles] Path=%ResourceDir%/Themes/Aero/Aero.msstyles Composition=0 ColorStyle=NormalColor Size=NormalSize ColorizationColor=0x6B74B8FC Transparency=1 |
以下样例为Windows经典主题的VisualStyles语段。
[VisualStyles] Path= ColorStyle=@themeui.dll,-854 Size=@themeui.dll,-2019 Transparency=0 |
以下样例为高对比度(黑)主题的VisualStyles语段。
[VisualStyles] Path= ColorStyle=@themeui.dll,-852 Size=@themeui.dll,-2019 Transparency=0 |
注意 这一部分为可选语段。如果你的.theme主题文件中不包含这一部分,系统使用默认声音设定。
用户可以通过选择控制面板中的 声音图标来设置应用程序事件的相关系统音。.theme主题文件可以自定义.wav文件来替换系统默认值。以下样例将展示如何实现这一目标。
[AppEvents/Schemes/Apps/.Default/SystemExclamation] DefaultValue=%WinDir%/media/chord.wav [AppEvents/Schemes/Apps/.Default/SystemExit] DefaultValue=%WinDir%/media/tada.wav [AppEvents/Schemes/Apps/.Default/SystemHand] DefaultValue=%WinDir%/media/chord.wav [AppEvents/Schemes/Apps/.Default/SystemQuestion] DefaultValue=%WinDir%/media/chord.wav [AppEvents/Schemes/Apps/.Default/SystemStart] DefaultValue=%WinDir%/media/The Microsoft Sound.wav [AppEvents/Schemes/Apps/Explorer/EmptyRecycleBin] DefaultValue=%WinDir%/media/ding.wav |
[Sounds] ; "Quirky" sound scheme SchemeName=@%SystemRoot%/System32/mmres.dll,-819 |
[Boot]
注意 这一部分为可选语段。如果你的.theme主题文件中不包含这一部分,该主题将不包含屏幕保护文件。
在.theme主题文件中,你可以自定义该主题所使用的屏幕保护。以下为样例。
[boot] SCRNSAVE.EXE=%WinDir%/System32/bubbles.scr |
注意 这一部分为必要语段。如果你的.theme主题文件中不包含这一部分,系统将忽略你的主题,该主题在控制面板中将不被显示。
.theme主题文件必须含有Master theme selector语段作为文件合法的标记。该语段没有可供设置的变量。以下为样例。
[MasterThemeSelector] MTSM=DABJDKT |
以下为一个完整的.theme主题文件样本。
[Theme] DisplayName=My Current Theme BrandImage=c:/Fabrikam/brand.png ; Computer [CLSID/{20D04FE0-3AEA-1069-A2D8-08002B30309D}/DefaultIcon] DefaultValue=%SystemRoot%/System32/imageres.dll,-109 ; Documents [CLSID/{59031A47-3F72-44A7-89C5-5595FE6B30EE}/DefaultIcon] DefaultValue=%SystemRoot%/System32/shell32.dll,-235 ; Network [CLSID/{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}/DefaultIcon] DefaultValue=%SystemRoot%/System32/imageres.dll,-25 ; Recycle Bin [CLSID/{645FF040-5081-101B-9F08-00AA002F954E}/DefaultIcon] Full=%SystemRoot%/System32/imageres.dll,-54 Empty=%SystemRoot%/System32/imageres.dll,-55 [Control Panel/Cursors] Arrow= Help= AppStarting= Wait= NWPen= No= SizeNS= SizeWE= Crosshair= IBeam= SizeNWSE= SizeNESW= SizeAll= UpArrow= DefaultValue=Windows default [Control Panel/Desktop] Wallpaper=%ProgramFiles%/fabrikam/wallpaper/ocean.jpg TileWallpaper=0 WallpaperStyle=2 Pattern= ScreenSaveActive=0 [AppEvents/Schemes/Apps/.Default/.Default] DefaultValue=%WinDir%/media/ding.wav [AppEvents/Schemes/Apps/.Default/AppGPFault] DefaultValue= [AppEvents/Schemes/Apps/.Default/Maximize] DefaultValue= [AppEvents/Schemes/Apps/.Default/MenuCommand] DefaultValue= [AppEvents/Schemes/Apps/.Default/MenuPopup] DefaultValue= [AppEvents/Schemes/Apps/.Default/Minimize] DefaultValue= [AppEvents/Schemes/Apps/.Default/Open] DefaultValue= [AppEvents/Schemes/Apps/.Default/RestoreDown] DefaultValue= [AppEvents/Schemes/Apps/.Default/RestoreUp] DefaultValue= [AppEvents/Schemes/Apps/.Default/RingIn] DefaultValue= [AppEvents/Schemes/Apps/.Default/Ringout] DefaultValue= [AppEvents/Schemes/Apps/.Default/SystemAsterisk] DefaultValue=%WinDir%/media/chord.wav [AppEvents/Schemes/Apps/.Default/SystemDefault] DefaultValue= [AppEvents/Schemes/Apps/.Default/SystemExclamation] DefaultValue=%WinDir%/media/chord.wav [AppEvents/Schemes/Apps/.Default/SystemExit] DefaultValue= [AppEvents/Schemes/Apps/.Default/SystemHand] DefaultValue=%WinDir%/media/chord.wav [AppEvents/Schemes/Apps/.Default/SystemQuestion] DefaultValue=%WinDir%/media/chord.wav [AppEvents/Schemes/Apps/.Default/SystemStart] DefaultValue= [AppEvents/Schemes/Apps/Explorer/EmptyRecycleBin] DefaultValue=%WinDir%/media/ding.wav [AppEvents/Schemes/Apps/.Default/Close] DefaultValue= [Slideshow] Interval=1800000 Shuffle=1 ImagesRootPath=%ProgramFiles%/fabrikam/wallpaper Item0Path=%ProgramFiles%/fabrikam/wallpaper/ocean.jpg Item1Path=%ProgramFiles%/fabrikam/wallpaper/mountain.jpg Item2Path=%ProgramFiles%/fabrikam/wallpaper/river.jpg [boot] SCRNSAVE.EXE=%WinDir%/System32/bubbles.scr [MasterThemeSelector] MTSM=DABJDKT ThemeColorBPP=4 [VisualStyles] Path=%SystemRoot%/resources/Themes/Aero/Aero.msstyles ColorStyle=NormalColor Size=NormalSize ColorizationColor=0x856E3BA1 Transparency=1 |
Windows在初始化时,系统会扫描%WinDir%/Resources/下的一级子文件夹来识别可用主题。
.theme文件拥有文件关联。因此,主题安装软件可以直接对指定.theme主题文件调用 ShellExecute来开启控制面板中的 显示 (Windows XP)或 个性化(Windows Vista or Windows 7),并设定为该指定主题。
主题包
Windows 7或更新版本主题包是一个包含.theme文件及其相关声音、图像等资源的.cab文件。用户可以通过个性化窗口创建一个主题包。
以下为主题包中支持的文件格式:
文件类型 | 扩展名 |
主题 | .theme |
图像 | .jpg, .jpeg, .bmp, .dib, .tif, .png |
声音 | .wav |
鼠标指针 | .cur, .ani |
桌面图标 | .ico |
预览图 | .png |
备注:
本文转载自:http://bbs.acgdiy.com/simple/?t17987.html