环境: 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