开发自己的Shell

来源:互联网 发布:游戏公司的程序员累吗 编辑:程序博客网 时间:2024/04/30 20:33

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

原创粉丝点击