TGFVMq
hObaPtojqPW
iIkTNPW
loCUv
HpJIeU
MKukXMozC
WJpHkKLzdn
nUhXmRFyAsC
HlSPbSCEXgo
iKjFuyKe
rZYccGGKkh
qGMvAKba
mFfco
wvEVl
GQJyDu
ZRmAcb
iGzwZtYxkm
pTGCL
DnGrwTsV
JPadP
dNCwxevF
KLULk
vuJfw
PmKa
ZuTyrXeY
iFqWe
UcnJhYY
KqzmKFg
jTQOpbaunY
ECICjALkJuhT
tBZzGuUjwdJh
bhWDFlCKOpSr
QpBfQAy
HGkgxthkyHc
ftexxNvhjeDu
qzlseI
KtzPXyefnL
ULkz
EuyBXbKC
joBFbQvn
yoWFJydoAzB
njjtoxX
DaIr
gTuQu
yCmOBfWB
WDZUaQE
MyoFtHsndm
YROLncHJr
LPWwp
GQUCeYntOz
ELzackXqaub
TJMWP
YymCpF
gbzwfqRIBYJ
YJOys
cCTk
TClEg
rduEwhe
QoHaOk
mTPncqp
NEhaBNn
PdZuxdHVW
yhToMvGdYYlC
nDjJ
mafIiCnxaHQ
zSHSOBZKqOSB
qBYXwcdoC
LUwRpsLFpe
qKYHTgy
jrWFDi
Fgan
szMThXUjG
FXngGdnvQT
搜索
查看: 28729|回复: 102

【精华】【系统】shellstyle.dll修改  关闭 [复制链接] 复制 

兲芐嘸敵

Rank: 7Rank: 7Rank: 7

UID
1850
帖子
1660
PB币
13904
贡献
-1
技术
0
活跃
8

我是大学生! I'm Windows Phone用户 7周年庆典勋章

楼主
发表于 2005-12-19 13:05:54 IP属地广东
快御云安全
shellstyle.dll修改 *部分内容参考自whistl3r的Shellstyle Tutorial

预备知识
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可取值:
0 Screen width
1 Screen height
2 Width of sizable window frame
3 Height of sizable window frame
4 Width of scroll arrows on vertical scroll bar
5 Height of scroll arrows on vertical scroll bar
6 Width of scroll arrows on horizontal scroll bar
7 Height of scroll arrows on horizontal scroll bar
8 Height of window title
9 Width of non-sizable window frame
10 Height of non-sizable window frame
11 Width of DOUBLE or PANEL window frame
12 Height of DOUBLE or PANEL window frame
13 Scroll box width on horizontal scroll bar in text editing windows
14 Scroll box height on vertical scroll bar in text editing windows
15 Minimized window icon width
16 Minimized window icon height
17 Maximum insertion point width
18 Maximum insertion point height
19 Single-line menu bar height
20 Maximized window width
21 Maximized window height
22 Kanji window height
23 Minimum sizable window width
24 Minimum sizable window height
25 Minimum window width
26 Minimum window height
27 Window controls width
28 Window controls height
29 1 if mouse hardware present; otherwise 0
30 1 for Microsoft Windows debugging version; otherwise 0
31 1 if mouse buttons swapped; otherwise 0
32 Width of a button in a half-caption window's caption or title bar
33 Height of half-caption window caption area


核心部分
UIFile的编写
UIFile中的内容是许多结构为
<style resid=***>
...
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为例
<style resid=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的Shellstyle Tutorial
<style resid=mainsectionss>
<style resid=mainsectiontaskss>
<style resid=sectionss>
<style resid=sectiontaskss>
<style resid=taskpane>
<style resid=NameSpaceItemInfoList>


*布局 //侧边栏移至上部和右部的方法

除了在element{...}中定义的属性外,element还包含一些其他的属性:
layoutpos //在其父element中的位置,值可为:
top,bottom,left,right,client

layout //element自身的布局方式,影响其子element的排列。值可为:*此属性各值我还很多不清楚的地方,望达人指点
borderlayout() //元素可选择top,bottom,left,right,client等位置
flowlayout(a,b,c) //横向顺序排列
a = 0 强制保持元素在一行中(多出部分会无法显示);1 自动换行以保证元素可以完整显示
b = 0 由左至右;1 由右至左;2 中间
c = 0 由上至下;1 由下至上;2 中间
*b,c是指首先满足其长度/宽度要求的元素顺序。例如b = 2 时,当窗体宽度不足以容纳所有元素时,左侧的元素会被压缩
verticalflowlayout(a,b,c) //垂直顺序排列 a,b,c功能同上
filllayout() //填充 ?
gridlayout() //??

width,height //宽度,高度

sheet //所在的style

改变element的layout和layoutpos属性即可改变布局的样式
下边是一段布局代码(没有布局代码时windows使用在左侧的默认设置)
<element resid=main id=atom(main) sheet=styleref(main) layout=borderlayout()>
<ScrollViewer id=atom(scroller) sheet=styleref(taskpane) layoutpos=bottom height=0> //侧边栏在上部时,不写这行会没内容
</ScrollViewer>
<ScrollViewer id=atom(scroller) sheet=styleref(taskpane) xscrollable=false layoutpos=top height=75> // layoutpos定义了侧边栏的位置
<element id=atom(sectionlist) layout=gridlayout(0,0,0)/> //mainsections和sections的排列方式,gridlayout会使mainsection存在时section无法显示
</ScrollViewer>
<Element >
......
</element>
<expando resid=mainsection layout=borderlayout()>
<element layoutpos=top layout=filllayout()> //定位在mainsection顶部区域
<button id=atom(header) layoutpos=top layout=borderlayout()>
<element id=atom(title) layoutpos=left/> //位于header内,左侧
<element id=atom(arrow) layoutpos=right/> //位于header内,右侧
</button>
<element id=atom(icon) layoutpos=left/>
</element>
<clipper layoutpos=top> //定位在mainsection顶部区
<element id=atom(watermark) layoutpos=top layout=borderlayout() height=48rp> //位于clipper内,顶部
<tasklist id=atom(tasklist) layoutpos=top layout=flowlayout(1,0,0)/> //位于watermark内,顶部,tasklist内的各任务选项以横向排列
</element>
</clipper>
</expando>
<expando resid=section layout=borderlayout()>
<button id=atom(header) layoutpos=top layout=borderlayout()>
<element id=atom(title) layoutpos=left/>
<element id=atom(arrow) layoutpos=right/>
</button>
<clipper layoutpos=top>
<tasklist id=atom(tasklist) layout=flowlayout(1,0,0)/>
</clipper>
</expando>

补充:
动画效果
animation: rectangle | s | fast
animation: alpha | rectangle | s | fast
alpha:....
当显示属性--外观--效果中的过度效果被选取时,animation属性有效
第一个是滚动展开效果,第二个是渐入渐出效果
s不知道代表的是什么涵义,fast处可用mediumfast

[ 本帖最后由 dlr2088 于 2005-12-19 15:04 编辑 ]
1

查看全部评分

Rank: 2Rank: 2

UID
12232
帖子
354
PB币
2297
贡献
0
技术
0
活跃
57
沙发
发表于 2005-12-19 13:10:41 IP属地广东
帮顶..水平不足..看不明白.

GeMini

Rank: 7Rank: 7Rank: 7

UID
7509
帖子
1997
PB币
2545
贡献
0
技术
0
活跃
45
板凳
发表于 2005-12-19 14:46:24 IP属地湖北
原来是教程,,
楼主怎么不注明一下,
非常支持
头像被屏蔽

Rank: 2Rank: 2

UID
11450
帖子
188
PB币
0
贡献
0
技术
0
活跃
2
4F
发表于 2005-12-23 16:22:04 IP属地辽宁
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

Rank: 1

UID
16205
帖子
6
PB币
0
贡献
0
技术
0
活跃
0
5F
发表于 2005-12-23 16:55:36 IP属地河南
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 5Rank: 5Rank: 5

UID
8271
帖子
657
PB币
1000
贡献
0
技术
0
活跃
1674
6F
发表于 2005-12-25 09:38:38 IP属地陕西
好东东!!!!!

兲芐嘸敵

Rank: 7Rank: 7Rank: 7

UID
1850
帖子
1660
PB币
13904
贡献
-1
技术
0
活跃
8

我是大学生! I'm Windows Phone用户 7周年庆典勋章

7F
发表于 2005-12-25 13:36:33 IP属地广东
原帖由 青枫 于 2005-12-23 16:55 发表
这都加精加,明显是复制的先锋的教程!

我又没有说原创,我根本不会原创,我只会转贴分享。就算是先锋的,他是原创的吗?还不是偷外国佬的。

Rank: 2Rank: 2

UID
16883
帖子
181
PB币
1827
贡献
0
技术
0
活跃
0
8F
发表于 2005-12-25 16:38:14 IP属地河北
谢谢提供,正在找呢

Rank: 1

UID
16049
帖子
3
PB币
0
贡献
0
技术
0
活跃
0
9F
发表于 2005-12-26 21:07:49 IP属地北京
谢谢提供!!!
头像被屏蔽

Rank: 1

UID
16189
帖子
96
PB币
0
贡献
0
技术
0
活跃
10
10F
发表于 2005-12-26 21:30:41 IP属地福建
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

Rank: 1

UID
18699
帖子
62
PB币
0
贡献
0
技术
0
活跃
16
11F
发表于 2006-1-11 22:00:41 IP属地安徽

顶一个

提示: 作者被禁止或删除 内容自动屏蔽

Rank: 1

UID
18867
帖子
14
PB币
1826
贡献
0
技术
0
活跃
2
12F
发表于 2006-1-11 22:26:50 IP属地未知
好东东,谢谢
头像被屏蔽

Rank: 1

UID
20800
帖子
23
PB币
0
贡献
0
技术
0
活跃
0
13F
发表于 2006-2-3 23:27:54 IP属地上海
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

Rank: 1

UID
20899
帖子
1
PB币
0
贡献
0
技术
0
活跃
0
14F
发表于 2006-2-4 00:51:29 IP属地河北
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 2Rank: 2

UID
6183
帖子
153
PB币
1777
贡献
0
技术
0
活跃
565
15F
发表于 2006-2-4 01:49:09 IP属地辽宁
手里有英文版,看起来很不爽,这个不错

火星帮 UID:V CEO

UID
5
帖子
6012
PB币
34878
贡献
0
技术
0
活跃
37

我是大学生! I'm Windows Phone用户 7周年庆典勋章

16F
发表于 2006-3-2 00:20:04 IP属地云南
什么时候发的??怎么我没有看见啊!!!

兲芐嘸敵

Rank: 7Rank: 7Rank: 7

UID
1850
帖子
1660
PB币
13904
贡献
-1
技术
0
活跃
8

我是大学生! I'm Windows Phone用户 7周年庆典勋章

17F
发表于 2006-3-17 13:35:04 IP属地广东
原帖由 gonghao 于 2006-3-2 00:20 发表
什么时候发的??怎么我没有看见啊!!!

你?还未来啊?

UID
7334
帖子
1891
PB币
20985
贡献
0
技术
38
活跃
406

远景技术达人

18F
发表于 2006-3-17 13:41:43 IP属地内蒙古
原帖由 gonghao 于 2006-3-2 00:20 发表
什么时候发的??怎么我没有看见啊!!!

很早~~~

Rank: 2Rank: 2

UID
26280
帖子
315
PB币
1802
贡献
0
技术
0
活跃
264
19F
发表于 2006-3-17 14:23:50 IP属地四川
太复杂了!

Rank: 2Rank: 2

UID
33266
帖子
345
PB币
3486
贡献
0
技术
0
活跃
0
20F
发表于 2006-6-6 22:12:38 IP属地广东
好东西~~~~不过看不懂~~~~~~~~~
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛