如何在Wince5.0先建立并使用自己的Shell

来源:互联网 发布:现代机械优化设计方法 编辑:程序博客网 时间:2024/05/16 17:05

环境:
Wince5.0+ARM926
目的:
按照自己的风格建立Shell
背景:
考虑到产品外观及风格的一致性,无法直接把Explorer作为Shell,而且,又无简单的把Explorer直接放到后台(会出现一些问题,譬如启动的瞬间,Explorer会显示一下)
方法:
1. 直接修改Explorer,改为自己的风格。个人认为这是最根本最有效的方法,但是工作量比较大,考虑到时间只能放弃。
2. 直接用自己的Shell替代Explorer。在Shell.reg中有一句
[HKEY_LOCAL_MACHINE/init]
"Launch50"="explorer.exe"
"Depend50"=hex:14,00, 1e,00
就是这一句在启动的最后把Explorer启动起来。(Launchxx的含义及用法在PB的帮助里面有解释)。
把explorer.exe替换自己的shell即可(譬如MyShell.exe),以前一直使用这种方法。
但这种方法有缺陷:wince的Common Dialog是依赖于Explorer的,这就导致很多Wince自带的程序执行时有问题,譬如WordPad无法打开和保存。。。(如果哪位知道如何在不启动Explorer的情况下使用Common Dialog的话,还烦请告诉小弟)
3. 现在是对Explorer稍作修改确保显示没有问题,然后放在后台,步骤如下:
3.1. 按照PB Help的提示修改Explorer(如果通过修改注册表实现,则尽量不修改Explorer代码)
a. 复制WINCE500/PUBLIC/SHELL/OAK/HPC,到WINCE500/PUBLIC/SHELL/OAK目录下,并重命名为MyShell
b. 修改dir文件
c. 去掉桌面上显示的"Microsoft Windows CE...........":
直接把desktopview.cpp中#ifndef SHIP_BUILD改为#if 0即可。
(理论上在Platform Setting里面可以设置此段文字不显示的,但是不知为何不起作用)
d. 修改Taskbar自动隐藏时的高度:
taskbar.hxx中,把TASKBAR_HEIGHT_AUTOHIDE改为0
e. 去掉Explorer启动时的音乐:
把WinMain中的sndPlaySound(c_szSystemStart, SND_ALIAS|SND_ASYNC|SND_NODEFAULT);注释掉。
(注册表中,没有找到开机音乐的键值。如果哪位知道,请不吝赐教)
3.2. 修改注册表
a. Shell.reg: 桌面上去掉"My Device"和"Recycle Bin"两个图标
找到
[HKEY_LOCAL_MACHINE/Explorer/Desktop]
"{000214A0-0000-0000-C000-000000000046}"="My Device"
"{000214A1-0000-0000-C000-000000000046}"="Recycle Bin"
改为
[HKEY_LOCAL_MACHINE/Explorer/Desktop]
;"{000214A0-0000-0000-C000-000000000046}"="My Device"
;"{000214A1-0000-0000-C000-000000000046}"="Recycle Bin"
b. 去掉桌面上的其它快捷方式
wince用Directory("/Windows/LOC_DESKTOP_DIR"):-File("LOC_MSPWORD_LNK","/Windows/wordpad.lnk")的方式在桌面上建立快捷方式
把WINCE500/PUBLIC/WCEAPPSFE/OAK/FILES/wceappsfe.dat中的所有Directory("/Windows/LOC_DESKTOP_DIR"):-File(...)全部注释掉。
把WINCE500/PUBLIC/WCESHELLFE/OAK/FILES/wceshellfe.dat中的所有Directory("/Windows/LOC_DESKTOP_DIR"):-File(...)全部注释掉。
c. 设置Taskbar为自动隐藏
在注册表中添加
; -- 使任务栏缺省自动隐藏
[HKEY_LOCAL_MACHINE/Software/Microsoft/Shell/AutoHide]
@="1"

; -- 使任务栏缺省不总在最前
[HKEY_LOCAL_MACHINE/Software/Microsoft/Shell/OnTop]
""=dword:0
d. 修改桌面背景颜色
[HKEY_LOCAL_MACHINE/SYSTEM/GWE]
"SysColor"=hex:/
00,00,00,00,/
00,00,00,00,/ //Desktop窗口背景颜色,现在设置为黑色
00,00,00,00,/
00,00,00,00,/
EF,EB,DE,00,/
FF,FF,FF,00,/
00,00,00,00,/
00,00,00,00,/
00,00,00,00,/
FF,FF,FF,00,/
C0,C0,C0,00,/
C0,C0,C0,00,/
80,80,80,00,/
31,69,C6,00,/
FF,FF,FF,00,/
EF,EB,DE,00,/
AD,AA,9C,00,/
80,80,80,00,/
00,00,00,00,/
00,00,00,00,/
FF,FF,FF,00,/
73,6D,63,00,/
FF,FF,FF,00,/
00,00,00,00,/
FF,FF,E1,00,/
EF,EB,DE,00,/
00,00,00,00
e. 背景图片
[HKEY_CURRENT_USER/ControlPanel/Desktop]
"wallpaper"="//NandDisk//Startup//wallpaper.bmp"
f. 启动自己的Shell
[HKEY_LOCAL_MACHINE/init]
"Launch70"="//Windows//ShellLoader.exe"
"Depend70"=hex:14,00, 1e,00

效果:系统启动后,先启动explorer显示wallpaper.bmp,然后启动ShellLoader.exe

原创粉丝点击