自己动手做主题包

从 Windows 7 开始微软推出了主题包文件,扩展名 themepack 或者 deskthemepack,这种文件将各种系统主题所需要的壁纸、声音、界面配色等,用 CAB 格式一次性打包,只需轻轻双击就能立刻使用,方便使用和分享。下面讲几个窍门,教你自己动手搓一个。

首先,需要准备几幅桌面壁纸,统一存放到 DesktopBackground 文件夹里面。只要图片内容、品质、尺寸合理即可。

其次,准备其他一些资源,包括主题文件(.theme)和声音,和 DesktopBackground 文件夹放在一起。

下面就是重头戏,手搓主题文件。主题文件是一个文本格式的配置文件,只需几个参数就可以指定系统界面颜色、桌面壁纸、声音、鼠标指针、屏保等等,大部分参数都是可选的,没有指定的部分就用系统默认配置替代。

点击这里了解一下

主题文件开头先要注明主题文件的名称,以及用来代表这个主题的图片,在控制面板显示。

[Theme]
DisplayName=My Current Theme
BrandImage=c:\Fabrikam\brand.png

BrandImage 参数要求使用 80x240 像素的 PNG 图像,但是 Win10 设置里面用不上了。
接下来是用于桌面的几个图标。

; 从上到下依次是这台电脑、文档、网络、回收站
[CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon]
DefaultValue=%WinDir%\System32\imageres.dll,-109
[CLSID\{59031A47-3F72-44A7-89C5-5595FE6B30EE}\DefaultIcon]
DefaultValue=%WinDir%\System32\shell32.dll,-235
[CLSID\{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}\DefaultIcon]
DefaultValue=%WinDir%\System32\imageres.dll,-25
[CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon]
Full=%WinDir%\System32\imageres.dll,-54
Empty=%WinDir%\System32\imageres.dll,-55

接下来是一些给系统配色的选项。滚动条、文本和按钮等元素的颜色都可以用 RGB 色值来表示。

[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

下面参数用来定制光标,可以用 CUR 或 ANI 格式的图片

[Control Panel\Cursors]
Arrow=%WinDir%\cursors\sports_arrow.cur
Help=%WinDir%\cursors\sports_help.cur
AppStarting=%WinDir%\cursors\sports_wait.ani
Wait=%WinDir%\cursors\sports_busy.ani
NWPen=%WinDir%\cursors\sports_pen.cur
No=%WinDir%\cursors\sports_no.cur
SizeNS=%WinDir%\cursors\sports_size_ns.cur
SizeWE=%WinDir%\cursors\sports_size_we.cur
Crosshair=%WinDir%\cursors\sports_cross.cur
IBeam=%WinDir%\cursors\sports_beam.cur
SizeNWSE=%WinDir%\cursors\sports_size_nwse.cur
SizeNESW=%WinDir%\cursors\sports_size_nesw.cur
SizeAll=%WinDir%\cursors\sports_move.cur
UpArrow=%WinDir%\cursors\sports_up.cur
DefaultValue=Sports

接下来就是壁纸了,有两种路径可供选择。

一种是指定一个图像文件作为壁纸。

[Control Panel\Desktop]
Wallpaper=%WinDir%\web\wallpaper\Windows\img0.jpg
; 图片格式可以是 bmp、gif、jpg、png、tif
; 这部分除 Wallpaper 以外都是必填的
TileWallpaper=0
; 0 为不能平铺,1 为可以平铺
WallpaperStyle=2
; 0 为居中,2 为拉伸,6 为填充,10 为适应

另一种是以幻灯片的方式自动切换图片,这时候可以指定图册作为壁纸来源,让系统从指定来源按时切换壁纸。

[Slideshow]
Interval=1800000
; 确定背景更改次数,单位毫秒
Shuffle=1
; 是否随机切换,0 为不可
ImagesRootPath=%ProgramFiles%\fabrikam\wallpaper
; 指定相册路径
; RssFeed= 从指定 RSS 来源下载图像,不能与 ImagesRootPath 共用
; 下面参数指定具体每个图片的路径
Item0Path=%ProgramFiles%\fabrikam\wallpaper\ocean.jpg
Item1Path=%ProgramFiles%\fabrikam\wallpaper\mountain.jpg
Item2Path=%ProgramFiles%\fabrikam\wallpaper\river.jpg

接下来需要一个 .msstyles 文件来指定与桌面元素的大小和颜色有关的特定信息。这个部分是必填的。

[VisualStyles]
Path=%ResourceDir%\Themes\Aero\Aero.msstyles
Composition=0
ColorStyle=NormalColor
; 如果 ColorizationColor 和 Transparency 完全匹配系统配色就要填 NormalColor
; 否则就填 Custom
Size=NormalSize
ColorizationColor=0x6B74B8FC
Transparency=1

下面也有两种办法指定声音方案。

一种是用各个参数将声音与应用程序发生的事件相关联。

[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]
SchemeName=@%SystemRoot%\System32\mmres.dll,-819

最后,配上这部分内容,系统就会承认你的主题是有效的。

[MasterThemeSelector]
MTSM=DABJDKT

最后,万事俱备,就将这些文件这些文件打包成 CAB 格式,改一下后缀名就大功告成了。

要打包成 CAB,可以尝试以下途径:
用 CabMaker 打包,需要把所需文件和文件夹都放到一个文件夹里面

或者压缩成其他格式(比如 ZIP),然后用 ArcConvert 转码成 CAB,再改后缀名。

3 Likes