开发自己的Shell

    技术2022-05-11  11

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


    最新回复(0)