VisualStyle中的shellstyle.dll文件修改
2007-3-811:25:00
作者:Silencer
shellstyle.dll修改*部分内容参考自whistl3r的ShellstyleTutorial
预备知识
1.shellstyle.dll的结构
UIFiles:
UIFile1:定义窗体及任务列表样式
UIFile2:定义控制面板样式
Resources:资源文件列表
10,11,12:音乐文件夹
13,14,15:图片文件夹
16,17,18:查找
19,20,21:视频文件夹
22,26:控制面板
25:系统文件夹
100,101,102,103,104,105,106,107:面板打开/关闭按钮
110,112:面板顶栏
120:背景
Strings:定义常用字符串或数值(字体,字号)
CPWEBVW.CSS:定义用户帐户窗体样式
2.资源的使用
rcstr(Str_ID)
Str_ID:Strings中编号
rcbmp(BMP_ID,STRETCHING,TRANSPARENT_COLOR,WIDTH,HEIGHT,SIZE_FLAG,MIRROR)
BMP_ID:Resources中编号
STRETCHING:填充方式1=正常,3,=重复,6=拉伸,7=32bit位图
TRANSPARENT_COLOR:填充时忽略的颜色#RRGGBB
WIDTH,HEIGHT:宽度,高度
SIZE_FLAG:图像大小1=使用图片默认大小,0=使用指定的大小
MIRROR:反转0=正常,1=反转
rcint(Str_ID)//将字符串转为数值
Str_ID:Strings中编号
Dtb(handlemap(a),b,c)//猜测是一种获取当前主题中图像的方法,但a,b,c各值所代表的图像不是很明确
sysmetric(ID)//系统变量表
ID可取值:
0Screenwidth
1Screenheight
2Widthofsizablewindowframe
3Heightofsizablewindowframe
4Widthofscrollarrowsonverticalscrollbar
5Heightofscrollarrowsonverticalscrollbar
6Widthofscrollarrowsonhorizontalscrollbar
7Heightofscrollarrowsonhorizontalscrollbar
8Heightofwindowtitle
9Widthofnon-sizablewindowframe
10Heightofnon-sizablewindowframe
11WidthofDOUBLEorPANELwindowframe
12HeightofDOUBLEorPANELwindowframe
13Scrollboxwidthonhorizontalscrollbarintexteditingwindows
14Scrollboxheightonverticalscrollbarintexteditingwindows
15Minimizedwindowiconwidth
16Minimizedwindowiconheight
17Maximuminsertionpointwidth
18Maximuminsertionpointheight
19Single-linemenubarheight
20Maximizedwindowwidth
21Maximizedwindowheight
22Kanjiwindowheight
23Minimumsizablewindowwidth
24Minimumsizablewindowheight
25Minimumwindowwidth
26Minimumwindowheight
27Windowcontrolswidth
28Windowcontrolsheight
291ifmousehardwarepresent;otherwise0
301forMicrosoftWindowsdebuggingversion;otherwise0
311ifmousebuttonsswapped;otherwise0
32Widthofabuttoninahalf-captionwindow'scaptionortitlebar
33Heightofhalf-captionwindowcaptionarea
核心部分
UIFile的编写
UIFile中的内容是许多结构为
<styleresid=***>
...
Element[id=atom(*****)]
{...}
Element[id=atom(*****)]
{...}
...
...
</style>
的代码段,用于定义特定部分的样式及其内部元素的样式
其中可包含的属性有
contentalign://元素位置。可有以下值
top:topleft,topright,topcenter
middle:middleleft,middleright,middlecenter
bottom:bottomleft,bottomright,bottomcenter
wrap:wrapleft,wrapright,wrapcenter//只可用于文本
background://背景颜色
foreground://前景颜色
bordercolor://边界颜色这3个属性可有以下值
rgb(red,green,blue)//RGB颜色
argb(alpha,red,green,blue)//包含alpha通道
gradient(argb(alpha,red,green,blue),argb(alpha,red,green,blue),Direction)//渐变色,第1个颜色变量为左上,第2个右下Driection:方向0=水平,1=垂直
black,white,red,green,blue,...//直接描述
window,windowtext,buttonface,buttonshadow,buttonlight,buttontext,scrollbar,hotlight,activecaption,captiontext...//系统颜色
fontsize://字号
使用Strings表中值
fontface://字体
使用Strings表中值
fontstyle://字体样式
使用normal,bold,italic,underline等制
borderthickness:rect(left,top,right,bottom);//边框宽度
margin:rect(left,top,right,bottom);//缩放时保持不变的边缘宽度
padding:rect(left,top,right,bottom);//元素位置
以XP默认主题Luna的UIFile1为例
<styleresid=main>//主窗体
DUIListView[id=atom(listview)]//列表浏览
{
contentalign:middlecenter;
fontsize:sysmetric(-16);//sysmetric是系统变量表,对应的变量类型见前表
fontweight:sysmetric(-17);
fontstyle:sysmetric(-18);
fontface:sysmetricstr(6);
}
DUIAxHost[id=atom(preview)]//幻灯片浏览
{
contentalign:middlecenter;
borderthickness:rect(20rp,20rp,20rp,20rp);
bordercolor:rgb(255,0,0);
}
Element
{
background:argb(0,0,0,0);
}
Element[id=atom(blockade)]//系统文件夹
{
background:rgb(99,117,214);
borderthickness:rect(0rp,0rp,1rp,1rp);
bordercolor:white;
}
Element[id=atom(blockadeaccent)]//主窗口与侧边栏间的分割线
{
background:gradient(argb(0,148,187,255),argb(0,99,117,214),1);
}
Element[id=atom(blockadeclient)]//系统文件夹背景图片
{
contentalign:bottomright;
padding:rect(10rp,0rp,0rp,0rp);
}
Element[id=atom(blockadetitle)]//标题("这些文件是隐藏的")
{
fontface:rcstr(2);
fontsize:rcint(18)pt;
fontweight:rcint(11);
foreground:rgb(214,223,245);
background:argb(0,0,0,0);
padding:rect(0rp,20rp,10rp,0rp);
contentalign:wrapleft;
}
Element[id=atom(blockademessage)]//标题("此文件夹包含使您系统...")
{
fontface:rcstr(2);
fontsize:rcint(17)pt;
fontweight:rcint(12);
foreground:white;
background:argb(0,0,0,0);
padding:rect(1rp,15rp,10rp,0rp);
contentalign:wrapleft;
}
Element[id=atom(blockadeclear)]//"显示此文件夹内容"一般状态
{
margin:rect(0rp,20rp,0rp,0rp);
}
Button[id=atom(blockadeclearbutton)][keyfocused]//"显示此文件夹内容"键盘触发
{
contentalign:focusrect;
}
Element[id=atom(blockadecleartext)]
{
fontface:rcstr(1);
fontsize:rcint(15)pt;
fontweight:rcint(10);
foreground:white;
background:argb(0,0,0,0);
contentalign:wrapleft;
padding:rect(3rp,0rp,0rp,0rp);
}
Element[id=atom(blockadecleartext)][mousefocused]//"显示此文件夹内容"鼠标触发
{
cursor:hand;
fontstyle:underline;
}
</style>
//以下各块中元素不再赘述,功能请参阅whistl3r的ShellstyleTutorial
<styleresid=mainsectionss>
<styleresid=mainsectiontaskss>
<styleresid=sectionss>
<styleresid=sectiontaskss>
<styleresid=taskpane>
<styleresid=NameSpaceItemInfoList>
【Visual Style中的shellstyle.dll文件修改方法】相关文章:
★ 破解WINDOWSXP/2000/2003登录密码/去掉登录密码/重设登录密码的方法总结
★ 删除 Windows SharePoint Services的三种方法