`
vba150qf
  • 浏览: 18390 次
社区版块
存档分类
最新评论

shell定制相关资料

 
阅读更多

shell定制相关资料
2011年03月13日
  shell开发,是系统开发的一个部分。最明显的是Shell的代码,是属于BSP的一部分。需要使用PB,而不是EVC或VS2005!
  -------------------------------------------------- ------------------------------
  wince下shell 的定制
  首先我们需要了解下定制shenll的整个流程:
  1、shell可以从两个方面来定制:
  a 将一个独立的应用程序作为基于wince设备的shell,任何类型的windows应用程序(.exe)都可以被作为基于wince设备的shell,如果开发者的设备是一台单一功能的设备,且它只进行一个用户应用程序,那么将这个用户应用程序作为shell是一个最好的选择,对于这种处理的方法就是 自己制作一个.exe文件来代理wince自带的shell,在wince启动的时候通过修改注册表platform.reg来引导.exe文件,注册表如下修改:
  只要将MyApp.exe打包到NK,并在platform.reg中加入上面的注册表信息,这样WinCE启动时便会自动运行该程序。
  b 将浏览器作为基于wince设备的shell。将IE浏览器动态web页面作为一个标准的桌面来代替标准的windows桌面是近年来的一个新发展趋势,它的主要优点是用户可以很容易地创建和维护自己的用户界面。浏览器作为shell就是使用动态的HTML来创建一个高度定制、可动态变化的wince用户界面。由于桌面版的IE浏览器与wince的IE浏览器都支持DHTML,所以浏览器shell界面的开发、显示和测试都可以先在桌面计算机上进行,开发完后再将它打包到wince操作系统运行时映像进行最后的测试,这可以大大加快开发的进程。
  2、在了解了shell定制的方法后我们先来看下最初始的shell界面如下图:
  这个是wince系统默认的shell界面(通过我前面那篇文章就可以生成这个模拟器),下面我们一步步通过手术来简单修改shell
  首先我们可以去掉默认界面的My Device和回收站方法如下:
  打开注册表shell.reg (D:\WINCE600\PUBLIC\SHELL\OAK\FILES)只要在
  [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"
  这样再次编译过后就是这样的shell了
  接下来我们在修改界面中间的那个图片
  打开public\shell\oak\myshell\ceshell\ui\desktopview.cp p,(这里要先说下为了避免不可挽回的错误建议大家不要在原来的HPC上修改,而在同一目录下建个文件夹将HPC内的内容全部copy过来,然后将oak目录下的dirs文件路径改为你的文件名,我的是将HPC改为myshell),找到
  ::wsprintf(wszVersion, L"Windows Embedded CE v%d.%02d (Build %d on %s) ",
  VerInfo.dwMajorVersion, VerInfo.dwMinorVersion, VerInfo.dwBuildNumber, TEXT(__DATE__));
  看到了吧输出信息就是wince的版本信息,好了我们将他替换,如我Windows Embedded CE v%d.%02d (Build %d on %s)换为"This is me",修改后保存,然后点击myshell文件夹右键选择build and sysgen,喝杯茶等等系统内核编译好了,配置连接选项后连接设备,可以输出下图:
  这里好像不支持中文输出,应该是系统语言设置的问题,~~~看下面的乱码
  现在整个流程都弄清楚了,接下来就是细化ui下的代码了,额有错误的地方望不吝赐教,相互学习、共同进步。
  [HKEY_LOCAL_MACHINE\init] 
  "Launch50"="MyApp.exe"
  "Depend50"=hex:14,00,1e,00
  -------------------------------------------------- ------------------------------
  WinCE自启动Shell的问题 
  http://www.cnblogs.com/we-hjb/archive/2008/12/28/1 364070.html      
  WinCE开机即运行定制的Shell是很多系统的基本要求,有时还需要屏蔽WinCE自带的Shell。WinCE中程序的自启动,一般有两个实现方法,修改注册表和添加自启动快捷方式。修改注册表比较方便,如下:
  [HKEY_LOCAL_MACHINE\init] 
  "Launch70"="MyApp.exe"
  "Depend70"=hex:14,00,1e,00
  只要将MyApp.exe打包到NK,并在platform.reg中加入上面的注册表信息,这样WinCE启动时便会自动运行该程序。但这时WinCE自带的Shell总是先出来,然后才运行MyApp.exe,为了避免这种情况,我们可以将注册表设置修改如下:
  [HKEY_LOCAL_MACHINE\init] 
  "Launch50"="MyApp.exe"
  "Depend50"=hex:14,00,1e,00
  即将原来启动explorer.exe的值换为MyApp.exe。这样WinCE启动时直接进入定制的Shell,而不启动explorer.exe。但这时有可能引入了新问题,如果定制的Shell是基于MFC编写的,并且其中用到了如CFileDialog等类库时,就会出现意想不到的情况,如下图所示:
  上图是在不启动Explorer.exe时,尝试导入注册表文件出现的状况截图,而在启动explorer.exe时是没有问题的。这说明CFileDialog在某种程度上依赖于explorer.exe,具体细节没研究。但说明不启动explorer.exe,基于MFC的Shell运行时就可能会出问题。所以explorer.exe必须启动,但又不能出现WinCE界面。要解决这个问题自然就想到修改explorer.exe了。WinCE5.0和WinCE6.0中,这一部分的代码都是公开的,在WinCE6.0中Shell的相关代码在C:\WINCE600\PUBLIC\SHELL\OAK\HPC\EXPLORER\MAIN目录下。
  大致看了一下这一部分的代码,发现只需修改如下两个文件,就应该能实现需求。
  C:\WINCE600\PUBLIC\SHELL\OAK\HPC\EXPLORER\MAIN\des ktop.cpp
  Code
  bool CDesktopWnd::Create()
  {
  IShellFolder    *pSHF;
  FOLDERSETTINGS fs;
  RECT rc;
  HRESULT hr = E_FAIL;
  // Get a shell folder for the desktop
  hr = SHGetDesktopFolder(&pSHF);
  if(hr || !pSHF)
  goto Cleanup;
  // create a shell view for it
  hr = pSHF->CreateViewObject(NULL, IID_IShellView, (LPVOID *)&_psv);
  if(hr || !_psv)
  goto Cleanup;
  fs.ViewMode = FVM_ICON;
  fs.fFlags = FWF_DESKTOP | FWF_ALIGNLEFT | FWF_NOSCROLL;
  //++changed by hjb
  //将Desktop的窗口大小设为0
  //SetRect(&rc, 0, 0, GetSystemMetrics(SM_CXVIRTUALSCREEN), GetSystemMetrics(SM_CYVIRTUALSCREEN));
  SetRect(&rc, 0, 0, 0, 0);
  //--changed by hjb
  // create the desktop's view window (no need to AddRef since CreateViewWindow does it)
  hr = _psv->CreateViewWindow(NULL,  &fs, (IShellBrowser *)this, &rc, &_hWnd);
  if(hr || !_hWnd)
  {
  Release();
  goto Cleanup;
  }
  RegisterDesktop(_hWnd);
  Cleanup:
  if(pSHF)
  pSHF->Release();
  return (hr == S_OK);    
  }
  C:\WINCE600\PUBLIC\SHELL\OAK\HPC\EXPLORER\MAIN\exp lorer.cpp
  Code
  DWORD WINAPI CreateTaskBar(LPVOID pEvent)
  {
  HANDLE hSyncEvent = *((HANDLE *) pEvent);
  CTaskBar *pTaskBar = NULL;
  HWND hwndTB = NULL;
  pTaskBar = new CTaskBar;
  //++added by hjb
  //在创建任务栏时强制终止
  if(pTaskBar)
  {
  delete pTaskBar;
  SetEvent(hSyncEvent);
  return 0;
  }
  //--added by hjb
  if(!pTaskBar)
  {
  SetEvent(hSyncEvent);
  return 0;
  }
  g_TaskBar = pTaskBar;
  if(!pTaskBar->Register(g_hInstance))
  {
  g_TaskBar = NULL;
  delete pTaskBar;
  SetEvent(hSyncEvent);
  return 0;
  }
  RegisterTaskBar(pTaskBar->GetWindow());
  SetEvent(hSyncEvent);
  DWORD dwRet = pTaskBar->MessageLoop();
  delete pTaskBar;
  return dwRet;
  }
  修改完这两处后,先编译该目录,然后再重新编译整个系统(执行Sysgen)应该就可以了。Explorer.exe依然启动,依然可以听到WinCE启动的声音,但WinCE的界面已经屏蔽掉了。此时,基于MFC的Shell也能正常工作,如下图所示:
  在实际操作时,我没有通过修改源代码编译来完成这个测试。因为在编译C:\WINCE600\PUBLIC\SHELL\OAK\HPC\EXPLORER\MAIN目录时,发现它只生成了explorer.lib。考虑到重新编译整个系统的时间太长,所以直接修改了工程目录下的explorer.exe的文件,MakeImg后测试的。这里应该有快速编译的方法,但目前不知怎么弄。
  修改后,在WinCE6.0的模拟器中测试,达到了预想的效果。这样就大概解决了基于MFC的Shell和Explorer.exe之间的矛盾,是不是有隐患还不清楚,目前看来没问题。
  另外需要注意,修改public和private目录下的文件时,一定先做好备份,以免后患。           
  修改后的WinCE6.0的explorer.exe及演示视频的下载地址:
  http://files.cnblogs.com/we-hjb/WinCE_Shell.rar
  -------------------------------------------------- ------------------------------
  其实让一个程序在wince里启动和windows里差不多,直接设置其为启动项,这个有几个方法。 一个就是制作一个快捷方式,指向我们的应用程序如app.exe,然后将快捷方式放到\windows\startup下面。     
  步骤如下:(假设app.exe已经拷贝到windows下面)     
  在pb中创建一个文件,文件类型选txt,然后命名为.lnk后缀,假设名字为test.lnk     
  编辑其内容为:   16#\windows\app.exe     
  备注:前面的16是#   后面所有字符的总和,包括空格。Wince的帮助文档上说这么定义就行,但是我尝试后,最后down到目标机上面时提示找不到文件,在wince里查看这么创建的test.lnk的属性,发现其指向\windows\app.exe后面还有两个方框,因此不对,我的解决方法是修改test.lnk的内容为16#"\Windows\app.exe"     
  编辑好lnk文件内容后在pb中修改project.bib     
  在files段后面添加下面一行:(和添加别的文件到image中类似,也要在pb的flatform菜单的setting下添加build语句,同上,不再赘述) test.lnk   $(_FLATRELEASEDIR)\test.lnk   NK   S     
  project.dat增加下面一行:Directory("\Windows\startup"):-File("test.lnk","\W indows\test.lnk")     
  这样后系统启动后就会自动启动我们的程序了。     
  另外一种方法是编辑注册表:在project.reg中添加如下内容     
  [HKEY_LOCAL_MACHINE\init]     
  "Launch80"="app.exe"     
  "Depend80"=hex:14,00,1e,00     
  这个是设定启动顺序,launch后面的数字越大的越是后启动,Depend80后面的指定依赖项,为16进制,上面的语句表明依赖项为launch20定义的device.exe和launch30中定义的gwes.exe,   注意Launch后面的数字范围为0到99   ,此范围之外的将不会有效果。     
  这样两种方法的效果都是系统都是系统先启动资源管理器explorer.exe(就是看到的默认桌面),然后启动我们的程序,(如果利用taskman   shell然后去掉任务栏那么效果更好)但是这样还不够,我们如何不显示桌面,直接显示我们的程序呢?     
  网上有人介绍的方法是去掉standard shell,但是我编译总是报错。我采用的方法是替换注册表中lauch50中的explorer.exe为我的app.exe,即搞定。     
  修改注册表的方法:先把带KITL的系统跑起来,在PB的TOOLS->Remote   registry   editor里修改,验证有效后,再去修改platfrom.reg,   或者自己写个REG文件,然后在platform.reg里INCLUDE进来   SYSGEN后确认PBWORKSPACE里相关项目的REL目录里reginit.ini文件里包含了自己做的修改后make image然后DOWNLOAD下去就OK了。     
  值得补充的是,我们前面介绍的步骤中那个修改平台setting,添加语句的,是因为我每次都是重新sysgen和build,如果只是简单的make   image的话(都是pb中的build   OS菜单下的命令),那么将直接用release中的内容,因此也可以直接将文件放到release文件夹,然后改project.bib等实现往image中添加文件。同样,也可以直接修改release中的shell.reg中的launch50值为我们自己的程序(或者类似修改reginit.ini文件,reginit.ini文件存放有所有wince的静态注册表,来达到去掉桌面,直接启动我们程序的效果)。     
  注意,这么启动的程序,如果点击关闭,就会死机的,因为没有窗口运行了。实际运用中,当然不会让用户关闭我们的程序,除非他一起关闭系统。     
  如果也需要build的话,可以通过往image中添加文件的方法将我们改好的shell.reg添加到release目录。     
  总之,今天是把定制shell算是基本完成了。   
  -------------------------------------------------- ------------------------------
  WinCE下自定义Shell的方法
  http://blog.chinaunix.net/u2/63726/showart_1279963 .html
  考虑到产品外观及风格的一致性,无法直接把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 unigps.cn 
  b. 修改dir文件(修改WINCE500\PUBLIC\SHELL\OAK目录下dir文件,修改如下:DIRS=MyShell\)
  c. 去掉桌面上显示的"Microsoft Windows CE...........": 
  直接把desktopview.cpp(D:\WINCE500\PUBLIC\SHELL\MyShell\C ESHELL\UI)中#ifndef SHIP_BUILD改为#if 0即可。
  (理论上在Platform Setting里面可以设置此段文字不显示的,但是不知为何不起作用)
  d. 修改Taskbar自动隐藏时的高度:
  taskbar.hxx中(D:\WINCE500\PUBLIC\SHELL\MyShell\EXPLORER\INC),把TASKBAR_HEIGHT_AUTOHIDE改为0
  e. 去掉Explorer启动时的音乐:
  把WinMain(D:\WINCE500\PUBLIC\SHELL\MyShell\EXPLORER\ MAIN\explorer.cpp)中的sndPlaySound(c_szSystemStart, SND_ALIAS|SND_ASYNC|SND_NODEFAULT);注释掉。
  (注册表中,没有找到开机音乐的键值。如果哪位知道,请不吝赐教)
  3.2. 修改注册表
  a. Shell.reg(D:\WINCE500\PUBLIC\SHELL\OAK\FILES): 桌面上去掉"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_M SPWORD_LNK","\Windows\wordpad.lnk")的方式在桌面上建立快捷方式
  把WINCE500\PUBLIC\WCEAPPSFE\OAK\FILES\wceappsfe.dat中的所有Directory("\Windows\LOC_DESKTOP_DIR"):-File(...)全部注释掉。
  把WINCE500\PUBLIC\WCESHELLFE\OAK\FILES\wceshellfe.da t中的所有Directory("\Windows\LOC_DESKTOP_DIR"):-File(...)全部注释掉。
  c. 设置Taskbar为自动隐藏
  在注册表中添加
  ; -- 使任务栏缺省自动隐藏
  [HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\AutoH ide]
  @="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
  -------------------------------------------------- ------------------------------
  wince 界面定制--在shell原码上修改步骤
  wince 界面定制--在shell原码上修改步骤:(在x86环境下,修改ceshell中的代码)
  1、将WINCE500\PUBLIC\SHELL\OAK目录下的HPC文件夹(shell源码)复制到本文件夹下,将该文件夹改名,如myshell
  2、修改WINCE500\PUBLIC\SHELL\OAK目录下dir文件,修改如下:
  DIRS=myshell \
  3、将myshell内代码单独编译。运行PB5.0中菜单Build OS-〉Open Release Directory,进入DOS状态。
  进入\WINCE500\PUBLIC\SHELL\OAK目录下,输入:build -c。将myshell文件夹下代码,及wince shell源码进行编译生成.lib及.res文件
  4、将.lib及资源文件Link成.dll文件
  ceshell文件夹下创建ceshell_make文件夹,在ceshell_make文件夹下创建makefile和sources文件
  makefile文件内容:
  !INCLUDE $(_MAKEENVROOT)\makefile.def
  sources文件内容:
  TARGETNAME=ceshell
  TARGETTYPE=DYNLINK
  RELEASETYPE=PLATFORM
  DLLENTRY=_DllMainCRTStartup
  WINCEOEM=1
  INCLUDES=..\;..\..\inc
  TARGETLIBS= E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\oak\target\x86\retail\0409\ceshell.res E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\uuid.lib E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\ole32.lib E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\oleaut32.lib E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\commctrl.lib E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\oak\lib\x86\retail\shcore.lib E:\WINCE500\public\shell\oak\lib\x86\retail\ayguti ls.lib E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\coredll.lib
  SOURCELIBS= E:\WINCE500\public\shell\oak\lib\x86\retail\ceshap i.lib E:\WINCE500\public\shell\oak\lib\x86\retail\ceshui .lib E:\WINCE500\public\shell\oak\lib\x86\retail\taskba rlist.lib E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\coredll.lib
  SOURCES= \
  CDEFINES=$(CDEFINES) -DREAD_FROM_REGISTRY
  DEFFILE=E:\WINCE500\public\shell\oak\lib\x86\retai l\ceshell.def
  这样就可以通过这两个文件生成ceshell.dll;
  运行PB5.0中菜单Build OS-〉Open Release Directory,进入DOS状态。进入到
  WINCE500\PUBLIC\SHELL\OAK\myshell\ceshell_make目录下,输入:build -c。
  这样就生成了ceshell.dll文件。
  5、将.lib及.res文件Link成.exe文件
  在myshell文件夹下创建explorer_make文件夹,在explorer_make文件夹下创建makefile和sources文件
  makefile文件内容:
  !INCLUDE $(_MAKEENVROOT)\makefile.def
  sources文件内容:
  TARGETNAME=explorer1
  TARGETTYPE=PROGRAM
  RELEASETYPE=OAK
  TARGETLIBS= \
  E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\coredll.lib \
  E:\WINCE500\public\shell\oak\lib\x86\retail\explor er.lib \
  E:\WINCE500\PUBLIC\SHELL\OAK\LIB\x86\RETAIL\explor er.res \
  E:\WINCE500\public\shell\oak\lib\x86\retail\explor er_ie.lib \
  E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\uuid.lib \
  E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\ole32.lib \
  E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\oleaut32.lib \
  E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\commctrl.lib \
  E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\sdk\lib\x86\retail\ceshell.lib \
  E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\oak\lib\x86\retail\shcore.lib \
  E:\WINCE500\public\shell\oak\lib\x86\retail\ayguti ls.lib \
  E:\WINCE500\public\shell\oak\lib\x86\retail\favori tes.lib \
  E:\WINCE500\public\shell\oak\lib\x86\retail\taskba r.lib \
  E:\WINCE500\PBWorkspaces\test1\WINCE500\Emulator_x 86\cesysgen\oak\lib\x86\retail\ieceext.lib \
  E:\WINCE500\public\shell\oak\lib\x86\retail\shella ygfuncs.lib \
  E:\WINCE500\public\shell\oak\lib\x86\retail\shellp slayg.lib \
  SOURCELIBS= \
  SOURCES= \
  这样就能通过这两个文件,单独生成explorer1.exe文件
  运行PB5.0中菜单Build OS-〉Open Release Directory,进入DOS状态。进入到
  WINCE500\PUBLIC\SHELL\OAK\myshell\explorer_make目录下,输入:build -c。
  这样就生成了explorer1.exe文件。
  6、将shell.reg中的
  [HKEY_LOCAL_MACHINE\init]
  "Launch50"="explorer.exe"
  "Depend50"=hex:14,00, 1e,00
  改为
  [HKEY_LOCAL_MACHINE\init]
  "Launch50"="explorer1.exe"
  "Depend50"=hex:14,00, 1e,00
  这样就可以修改shell中的代码了!
  7、修改shell.bin中的
  ; @CESYSGEN IF SHELL_MODULES_EXPLORER
  explorer1.exe    $(_FLATRELEASEDIR)\explorer1.exe                  NK  S
  8、将explorer1.exe、ceshell.dll、ceshell.rel、ceshell.pdb和ceshell.map文件拷到
  E:\WINCE500\PBWorkspaces\test1\RelDir\Emulator_x86 _Debug目录下并覆盖原来的文件。
  这样再makeimg就可以将你修改后的代码装载到你的模拟器中了!
  自己总结的,希望能对大家有用! 
  -------------------------------------------------- ------------------------------
  Windows ce 桌面定制小结--转载
  一、采用standard shell,  
  去掉任务栏           代码%_winceroot%\public\shell\oak\hpc
  我尝试了以下两种方法:
  1、在taskbar.cpp中将函数BOOL CTaskBar::Register()的内容全部删除,直接return TRUE;
  2、在explorer.cpp中将函数DWORD WINAPI CreatTaskBar()的内容删除,直接return 0;
  两种方法都可以实现,只是不太清楚哪个方法更节约时间和空间。个人感觉第2个方法比较好。
  去除桌面"我的电脑""回收站"的图标 
  代码%_winceroot%\public\shell\oak\files
  在shell.reg文件中找到这两个键值,它们对应着桌面上的我的电脑和回收站,删除这两个键值:
  [HKEY_LOCAL_MACHINE\Explorer\Desktop] 
  "{000214A0-0000-0000-C000-000000000046}"="My Computer" 
  "{000214A1-0000-0000-C000-000000000046}"="Recycle Bin"
  注:也可只修改项目release目录下的shell.reg.之后只要make image就可以了。
  二、采用taskman shell,需设置环境变量__SYSGEN_TASKMAN=1.。
  taskman shell没有任务栏、开始菜单和桌面图标,但有桌面背景色。
  代码%_winceroot%\public\wceshellfe\oak\taskman\
  修改桌面背景色
  mindeskt.cpp中的void Desktop_OnPaintBkgnd()函数,更改其中的brush的颜色即可。
  即将HBRUSH hBkBrush = CreateSolidBrush(GetSysColor(COLOR_BACKGROUND));
  改成HBRUSH hBkBrush = CreateSolidBrush(RGB(123,230,123));即可实现背景色的改变。
  ----------------------------------
  修改wince桌面背景图片及桌面上的图标:
  方法一:
  将图片文件拷贝到生成平台目录,如:拷贝 Wallpaper_800×600.bmp 到D:\WINCE500\PBWorkspaces\SHELL_demo\RelDir\Emulato r_x86_Release 下 
  Platform Builder 5.0 下点击菜单 "Build OS" -> "Open Release Directory" 
  在弹出的 console 中 输入: notepad shell.bib,也就是用记事本打开 
  D:\WINCE500\PBWorkspaces\SHELL_demo\RelDir\Emulato r_x86_Release 下的 
  shell.bib 文件,进行编辑 
  编辑下面的代码,把 windowsce_qvgap.bmp 修改成自己添加的图片文件。即把 
  ; @CESYSGEN IF SHELL_MODULES_QVGAP 
  windowsce.bmp        $(_FLATRELEASEDIR)\windowsce_qvgap.bmp      NK S 
  ; @CESYSGEN ENDIF SHELL_MODULES_QVGAP 
  改为: 
  ; @CESYSGEN IF SHELL_MODULES_QVGAP 
  windowsce.bmp        $(_FLATRELEASEDIR)\Wallpaper_800x600.bmp      NK S 
  ; @CESYSGEN ENDIF SHELL_MODULES_QVGAP 
  保存 shell.bib 文件,回到 pb5,点击菜单 
  "Build OS" -> "Make Run-Time Image",即重新生成镜像文件,然后下载到模拟器或设 备,就会发现壁纸已经换了。
  方法二:
  1.应该修改你的release目录下的wceshellfe.reg文件 
  2.将图片拷贝到你的release目录下 
  3.修改release目录下的platform.bib文件,把图片文件加入内核(增加这么一句: 
  window.bmp  $(_FLATRELEASEDIR)\window.bmp NK U 
  4.make image 。
  方法三:
  还有一种可行办法的:
  条件是系统支持注册表保存。
  设定好背景,挂起系统,以后每次启动都是设置好的背景了。
  -------------------------------------------------- ------------------------------
  WinCE桌面墙纸及图标更换
  http://blog.csdn.net/nanjianhui/archive/2009/06/19 /4282613.aspx
  网上关于WinCE更换墙纸的文章一大堆,我也来写一篇,和网上已有的文章没什么区别。以前写的WinCE Blog大部分都是BSP相关的,以后打算写点WinCE系统定制方面的,就从这里开始吧。
  关于WinCE的墙纸,是在注册表中设置的,编译完WinCE工程以后,所有的reg文件中的内容都会被合并为reginit.ini文件。打开这个文件,可以找到如下内容:
  [HKEY_CURRENT_USER\ControlPanel\Desktop]
  "wallpaper"=\\Windows\\WindowsCE.bmp
  默认情况下,显示的是WindowsCE.bmp文件,但是被编译工程的release目录下并没有WindowsCE.bmp文件,倒是可以看到windowsce_qvgap.bmp和windowsce_vgal.bmp两个文件。这里需要看一下\WINCE600\public\shell\files\shell.bib文件中的定义就明白了。
  说白了,更换墙纸就是改注册表设置。最简单的方法就是修改project.bib和project.reg文件。首先在project.bib文件中添加如下内容:
  kungfuPanda.bmp   d:\WINCE600\OSDesigns\Emulator\Emulator\RelDir\Dev iceEmulator_ARMV4I_Release\wall.bmp          NK  S
  然后在project.reg文件添加如下内容:
  [HKEY_CURRENT_USER\ControlPanel\Desktop]
  "wallpaper"="\\Windows\\kungfuPanda.bmp" 最后将这两个文件拷贝到工程编译的release目录下面,重新Makeimg就可以了。在WinCE启动以后,我们会看到墙纸已经被更换,同样还能看到桌面上的"My Device"和"Recycle Bin",现在我想把他们的图标和名字也更换了,当然还要从注册表入手。相关注册表配置如下:
  ; Drives (My Device)
  [HKEY_CLASSES_ROOT\CLSID\{000214A0-0000-0000-C000- 000000000046}]
  "DisplayName"=mui_sz:"ceshell.dll,#20482"
  "DefaultIcon"="\\Windows\\ceshell.dll,-4354"
  [HKEY_CLASSES_ROOT\CLSID\{000214A0-0000-0000-C000- 000000000046}\InprocServer32]
  @="\\Windows\\ceshell.dll"
  ; Recycle Bin (BitBucket)
  [HKEY_CLASSES_ROOT\CLSID\{000214A1-0000-0000-C000- 000000000046}]
  "DisplayName"=mui_sz:"ceshell.dll,#20481"
  "DefaultIcon"="\\Windows\\ceshell.dll,-4352"
  "AltIcon"="\\Windows\\ceshell.dll,-4355"
  [HKEY_CLASSES_ROOT\CLSID\{000214A1-0000-0000-C000- 000000000046}\InprocServer32]
  @="\\Windows\\ceshell.dll"
  简单解释一下:
  "DisplayName":显示的名字,名字来源于ceshell.dll中的资源,其中My Device的资源ID为20482,Recycle Bin的资源ID为20481。
  "DefaultIcon":显示的图标,图标来源于ceshell.dll中的资源,其中My Device的图标资源ID为4354,Recycle Bin的图标资源ID为4352。
  "AltIcon":是指Recycle Bin中有东西时候的图标,大家都知道Recycle Bin空的时候和有东西的时候,图标显示是不一样的,这个图标资源来源于ceshell.dll中的图标资源,ID为4355。
  实际上,他们都来源于ceshell.dll中的资源文件,这个我们需要看一下\WINCE600\public\shell\oak\hpc\ceshell\ui目录下的resource.h和ceshui_base.rc两个文件,在resource.h中找到如下定义:
  #define IDS_DISPLAY_RECYCLEBIN       0x5001     //20481
  #define IDS_DISPLAY_DRIVES                   0x5002    //20482
  #define IDI_BITBUCKET                 0x1100   //4352
  #define IDI_BITBUCKET_FULL    0x1103    //4355
  #define IDI_MYCOMPUTER           0x1102   //4354
  这些就是ID资源的定义,根据这些可以在cehui_base.rc中找到相应的资源,如下:
  IDS_DISPLAY_RECYCLEBIN       "Recycle Bin"
  IDS_DISPLAY_DRIVES           "My Device"
  IDI_BITBUCKET           ICON   DISCARDABLE   "RES\\bitbucket.ico"
  IDI_BITBUCKET_FULL      ICON   DISCARDABLE   "RES\\bitbucket_full.ico"
  IDI_MYCOMPUTER          ICON   DISCARDABLE   "RES\\mycomputer.ico"
  如果想更换图标或者改名字,修改cehui_base.rc就可以了。首先把自己的图标拷贝到\WINCE600\public\shell\oak\hpc\ceshell\ui\res目录下面,然后在resource.h中定义几个新的ID,在cehui_base.rc中将新定义的ID和相应的图标或者名字相关联。
  接下来打开工程的project.reg文件,添加下面的内容:
  ; Drives (My Device)
  [HKEY_CLASSES_ROOT\CLSID\{000214A0-0000-0000-C000- 000000000046}]
  "DisplayName"=mui_sz:"ceshell.dll,#20736"
  "DefaultIcon"="\\Windows\\ceshell.dll,-4624"
  [HKEY_CLASSES_ROOT\CLSID\{000214A0-0000-0000-C000- 000000000046}\InprocServer32]
  @="\\Windows\\ceshell.dll"
  ; Recycle Bin (BitBucket)
  [HKEY_CLASSES_ROOT\CLSID\{000214A1-0000-0000-C000- 000000000046}]
  "DisplayName"=mui_sz:"ceshell.dll,#20737"
  "DefaultIcon"="\\Windows\\ceshell.dll,-4625"
  "AltIcon"="\\Windows\\ceshell.dll,-4355"
  [HKEY_CLASSES_ROOT\CLSID\{000214A1-0000-0000-C000- 000000000046}\InprocServer32]
  @="\\Windows\\ceshell.dll"
  这些配置是为了修改显示名字和图标,主要是修改ceshell.dll中的资源ID。
  最后打开工程的命令行窗口,切换到\WINCE600\public\shell\oak\hpc\ceshell目录,运行build进行编译,然后重新编译WinCE工程。
  最后编译完成以后,运行WinCE就可以看到墙纸以及My Device和Recycle Bin的名字和图标都被更换了。如图:
  我把原来的My Device更换为Root,把Recycle Bin更换为Box,把墙纸更换为功夫熊猫的墙纸了。看上去还不错啊。
  -------------------------------------------------- ------------------------------
  WINCE 建立快捷方式、内核添加文件(转)
  1.WINCE快捷方式结构
  WINCE的快捷方式和WIN2K,XP的不同,只是一个后缀名为.LNK的文本文件.
  其格式如下: 数字#路径
  比如,有个快捷方式写法如下:23#\Windows\ToolViewer.exe
  指的是指向WINDOWS文件夹下的Toolviewer.exe可执行文件.数字究竟代表的是什么意思,我也不太清楚;有一说法是#后的ACSII字符 的数量,但如果把上述例子改为1#\Windows\ToolViewer.exe也可正常运行,但去掉数字则系统无法识别.虽然可以正常使用,但建议还 是按照文档#之后的ACSII字符数量填写.
  2.如何把快捷方式加到内核中
  假设我们有一快捷方式EnglishExp.lnk,要将其加到内核中.
  在PB环境中打开工程,在project.bib文件的FILES字段中添加:
  EnglishExp.lnk     $(_WINCEROOT)\PLATFORM\MyAPPC\EnglishExp.lnk      NK H 
  其中 $(_WINCEROOT)指的是PC机子上PB安装的根目录,H指的是文件属性,意义代表如下:
  S:系统
  H:隐藏
  R:压缩的资源文件
  C:压缩文件
  U:非压缩文件
  3.如何把快捷方式放到桌面
  语法如下:Directory("欲拷贝至的文件夹"):-File("更改的名称","要拷贝的文件")
  假设我们有一快捷方式EnglishExp.lnk,要将其放到桌面,并把快捷方式的名称改为"英语"
  在PB的project.dat文件加入此句:
  Directory("\Windows\LOC_DESKTOP_DIR"):-File("英语.lnk","\Windows\CEnglishExp.lnk")
  包含在内核里面的文件全部释放到"\Windows"文件夹下.
  LOC_DESKTOP_DIR指的是本地桌面.在PB中,常用的还有如下宏定义:
  LOC_DESKTOP_DIR:              桌面
  LOC_MYDOCUMENTS_DIR:          My Documents
  LOC_PROGRAMFILES_DIR:         Program Files
  LOC_FAVORITES_DIR:           Favorites
  LOC_RECENT_DIR:               Recent
  LOC_MYDOCUMENTS_DIR:          My Documents
  LOC_HELP_DIR:                Help
  更多的定义可以在ceshellfe.str文件中找到
  4.消除快捷方式的小箭头
  在PC机的操作系统中可以通过修改注册表来取消快捷方式左下角的小箭头,但在WINCE中注册表没有关于取消小箭头的键值(可能我没找到^_^).在这里我采用的是直接修改资源文件的做法.
  打开shcore.res文件,其中文的路径在 $(_WINCEROOT)\PUBLIC\COMMON\OAK\LIB\ARMV4I\RETAIL\ 0804\,然后将1205的ICO的小箭头删 掉即可.注意,不是删除ID为1205的ICO图标,是删除ICO图标中的内容.
  5.微软应用程序的快捷方式
  如果在PB中添加了微软的应用软件,便会在桌面和程序中添加其快捷方式;如果觉得快捷方式碍眼,可以将其注释掉再编译即可.
  现在列出一些dat文件中定义的微软应用软件的快捷方式:
  wceappsfe.dat (C:\WINCE420\PUBLIC\WCEAPPSFE\OAK\FILES\),内含:pmail,wordpad 
  wceshellfe.dat (C:\WINCE420\PUBLIC\WCESHELLFE\OAK\FILES\),内含:iexplore,帮助文档在"help"文件夹的快捷方式 
  viewers.dat (C:\WINCE420\PUBLIC\VIEWERS\OAK\FILES\), 内含:pdfviewer,imageviewer,Presviewer,Docviewer
  directx.dat (C:\WINCE420\PUBLIC\DIRECTX\OAK\FILES\),内含:Media Player,DVD Player
  6. 修改默认shell
  其实让一个程序在wince里启动和windows里差不多,直接设置其为启动项,这个有几个方法。一个就是制作一个快捷方式,指向我们的应用程序如app.exe,然后将快捷方式放到\windows\startup下面。     
  步骤如下:(假设app.exe已经拷贝到windows下面)     
  在pb中创建一个文件,文件类型选txt,然后命名为.lnk后缀,假设名字为test.lnk     
  编辑其内容为:    16#\windows\app.exe     
  备注:前面的16是#    后面所有字符的总和,包括空格。Wince的帮助文档上说这么定义就行,但是我尝试后,最后down到目标机上面时提示找不到文件,在wince里查看这 么创建的test.lnk的属性,发现其指向\windows\app.exe后面还有两个方框,因此不对,我的解决方法是修改test.lnk的内容为 16#"\Windows\app.exe"     
  编辑好lnk文件内容后在pb中修改project.bib     
  在files段后面添加下面一行:(和添加别的文件到image中类似,也要在pb的flatform菜单的setting下添加build语句,同上,不再赘述)     
  test.lnk    $(_FLATRELEASEDIR)\test.lnk    NK    S     
  project.dat     
  增加下面一行:     
  Directory("\Windows\startup"):-File("test.lnk","\W indows\test.lnk")     
  这样后系统启动后就会自动启动我们的程序了。     
  另外一种方法是编辑注册表:在project.reg中添加如下内容     
  [HKEY_LOCAL_MACHINE\init]     
  "Launch80"="app.exe"     
  "Depend80"=hex:14,00,1e,00     
  这个是设定启动顺序,launch后面的数字越大的越是后启动,Depend80后面的指定依赖项,为16进制,上面的语句表明依赖项为launch20 定义的device.exe和launch30中定义的gwes.exe,    注意Launch后面的数字范围为0到99    ,此范围之外的将不会有效果。     
  这样两种方法的效果都是系统都是系统先启动资源管理器explorer.exe(就是看到的默认桌面),然后启动我们的程序,(如果利用 taskman    shell然后去掉任务栏那么效果更好)但是这样还不够,我们如何不显示桌面,直接显示我们的程序呢?     
  网上有人介绍的方法是去掉standard    shell,但是我编译总是报错。我采用的方法是替换注册表中lauch50中的explorer.exe为我的app.exe,即搞定。     
  修改注册表的方法:先把带KITL的系统跑起来,在PB的TOOLS->Remote    registry    editor里修改,验证有效后,再去修改platfrom.reg,    或者自己写个REG文件,然后在platform.reg里INCLUDE进来    SYSGEN后确认PBWORKSPACE里相关项目的REL目录里reginit.ini文件里包含了自己做的修改后make    image然后DOWNLOAD下去就OK了。     
  值得补充的是,我们前面介绍的步骤中那个修改平台setting,添加语句的,是因为我每次都是重新sysgen和build,如果只是简单的 make    image的话(都是pb中的build    OS菜单下的命令),那么将直接用release中的内容,因此也可以直接将文件放到release文件夹,然后改project.bib等实现往 image中添加文件。    同样,也可以直接修改release中的shell.reg中的launch50值为我们自己的程序(或者类似修改reginit.ini文件, reginit.ini文件存放有所有wince的静态注册表,来达到去掉桌面,直接启动我们程序的效果)。     
  注意,这么启动的程序,如果点击关闭,就会死机的,因为没有窗口运行了。实际运用中,当然不会让用户关闭我们的程序,除非他一起关闭系统。     
  如果也需要build的话,可以通过往image中添加文件的方法将我们改好的shell.reg添加到release目录。     
  总之,今天是把定制shell算是基本完成了。 
  -------------------------------------------------- ------------------------------
  wince 在桌面创建快捷方式
  1.WINCE快捷方式结构
  WINCE的快捷方式和WIN2K,XP的不同,只是一个后缀名为.LNK的文本文件.
  其格式如下: 
  数字#路径
  比如,有个快捷方式写法如下:
  23#\Windows\ToolViewer.exe 指的是指向WINDOWS文件夹下的Toolviewer.exe可执行文件.数字究竟代表的是什么意思,我也不太清楚;有一说法是#后的ACSII字符 的数量,但如果把上述例子改为1#\Windows\ToolViewer.exe也可正常运行,但去掉数字则系统无法识别.虽然可以正常使用,但建议还 是按照文档#之后的ACSII字符数量填写.
  这个就是路径的问题所在,lnk文件的内容应为23#"\Windows\ToolViewer.exe"  .#号前面的数字可以任意。只是#前面的数字不符时查看快捷方式的属性会发现路径后面多了几个口口。不过这并不影响。
  2.如何把快捷方式加到内核中
  假设我们有一快捷方式EnglishExp.lnk,要将其加到内核中.
  在PB环境中打开工程,在project.bib文件的FILES字段中添加:
  EnglishExp.lnk $(_WINCEROOT)\PLATFORM\MyAPPC\EnglishExp.lnk NK H
  其中 $(_WINCEROOT)指的是PC机子上PB安装的根目录,H指的是文件属性,意义代表如下:
  S:系统
  H:隐藏
  R:压缩的资源文件
  C:压缩文件
  U:非压缩文件
  3.如何把快捷方式放到桌面
  语法如下:Directory("欲拷贝至的文件夹"):-File("更改的名称","要拷贝的文件")
  假设我们有一快捷方式EnglishExp.lnk,要将其放到桌面,并把快捷方式的名称改为"英语"
  在PB的project.dat文件加入此句:
  Directory("\Windows\LOC_DESKTOP_DIR"):-File("英语.lnk","\Windows\CEnglishExp.lnk")
  包含在内核里面的文件全部释放到"\Windows"文件夹下.
  LOC_DESKTOP_DIR指的是本地桌面.在PB中,常用的还有如下宏定义:
  LOC_DESKTOP_DIR: 桌面
  LOC_MYDOCUMENTS_DIR: My Documents
  LOC_PROGRAMFILES_DIR: Program Files
  LOC_FAVORITES_DIR: Favorites
  LOC_RECENT_DIR: Recent
  LOC_MYDOCUMENTS_DIR: My Documents
  LOC_HELP_DIR: Help
  小结:创建快捷方式本来是很简单的,不过有些细节的东西没搞明白真的会让你进了死胡同。希望我的这篇文章能对大家有用。
  http://blog.csdn.net/wen_hua/archive/2009/11/20/48 42465.aspx
  -------------------------------------------------- ------------------------------
  winCE系统启动时自动运行应用程序或放在桌面--已验证
  一、快捷方式    
  假定Windows   CE.NET目标工程为CEPC类型,目录为E:\Project\MyWinCE, 
  并且工程已经Build(或者Rebuild)成功;    
  假定WindowsCE.NET的应用为"MyApp.exe"    
  1.将MyApp.exe复制到E:\PROJECTS\MyWinCE\RelDir\SAMSUNG_SMDK2440_ARMV4I Release目录下;    
  2.修改MyWinCE工程的project.bib文件,在FILES添加 
  MyApp.exe         $(_FLATRELEASEDIR)\MyApp.exe           NK           H    
  3.创建快捷方式文件MyApp.lnk(先建文本文件,写入内容后再改扩展名为.lnk),文件内容如下(就一行字符):    
  10#\Windows\MyApp.exe
  MyApp.lnk文件也放入E:\PROJECTS\MyWinCE\RelDir\SAMSUNG_SMDK2440_ARMV4I Release目录下 
  4.修改MyWinCE工程的project.bib文件,在FILES添加    
  MyApp.lnk           $(_FLATRELEASEDIR)\MyApp.lnk             NK           H 
  5.修改MyWinCE工程的project.dat文件,添加如下内容:    
  Directory("\Windows\Startup"):-File("MyApp.lnk","\ Windows\MyApp.lnk")    
  6.Platform   Builder   IDE->菜单Build->MakeImage(记得千万不要Build或者Rebuild, 
  否则你就要重新来一遍) 
  到此得到的NK.bin就包含了应用程序MyApp.exe和MyApp.lnk, 
  并且MyApp程序会在系统启动时自动运行。  
  已通过运行!!!!!!!!!!一一2007.9.17晚
  -------------------------------------------------- ------------------------------
  WinCE桌面添加应用程序的快捷方式
  http://hi.baidu.com/wu_yuzhi/blog/item/362989512ce f22551138c21a.html
  将可执行程序MyApp.exe放入FAT分区KinglyFlash中,在桌面创建其快捷方式:
  (1) 创建KinglyApp.lnk 快捷方式文件
  使用桌面Windows 自带的记事本创建,保存时将后缀名改为lnk即可。.lnk 文件其实是一个文本文件,它包含用于链接目标的命令行以及命令行的长度,用于指向该快捷方式对应的应用程序存放的路径(建立起应用程序与其快捷方式之间的对应关系),其格式为   "#",其中length 是#后所有字符的个数,因此,KinglyApp.lnk的内容如下:
  22#\KinglyFlash\MyApp.exe
  注意:当把KinglyApp.lnk 后缀改为.lnk 后,使用记事本一般就无法打开了。
  把这个文件放入smdk2410\FILES 目录中。
  (2) 把快捷方式添加到内核中
  打开project.bib 文件,添加如下内容:
  KinglyJetApp.lnk     $(_FLATRELEASEDIR)\KinglyApp.lnk                NK U
  这样,执行SYSGEN 的时候会把KinglyJetApp.lnk加入到内核中,最后会存在于开发板的\Windows 目录中。
  注意:KinglyJetApp.lnk是生成的\Windows 目录下的快捷方式名,而KinglyApp.lnk则是第一步中建立的lnk文件名,否则会编译错误,当然,两个文件名也可以是一样的。
  (3) 把快捷方式添加到桌面
  打开project.dat,加入以下内容:
  Directory("\Windows\LOC_DESKTOP_DIR"):-File("Kingl y测试.lnk","\Windows\KinglyJetApp.lnk")
  这将会在桌面出现名称为"Kingly测试"的快捷方式,它是KinglyJetApp.lnk的一个
  拷贝,其内容和KinglyJetApp.lnk是一样的。
  (4) 最后执行菜单Builder -Sysgen,生成NK.bin 和NK.nb0
  把它们烧写或者下载到开发板启动后,就会在桌面看到"Kingly测试"快捷方式了。
分享到:
评论

相关推荐

    SHELL定制过程说明

    SHELL定制过程说明

    小型迷你定制shell源代码

    这是文章《【项目:C语言】小型迷你定制shell的实现》里的项目源代码。实现了一个小型可定制的迷你shell。

    Windows+Shell扩展编程完全指南

    Windows Shell扩展编程完全指南 目录与资料简介 第一节 - 一步步教你如何编写Shell扩展 第二节 - 如何编写一次操作多个文件对象的Shell扩展 ...第九节-如何编写定制文件类型显示图标的Shell扩展

    T07.定制WinCE Shell.pdf

    T07.定制WinCE Shell.pdfT07.定制WinCE Shell.pdf

    Windows Shell 扩展编程完全指南

    作者 Michael Dunn, 本资料由同济大学戴维制作 内容:  第一节 - 一步步教你如何编写Shell扩展  第二节 - 如何编写一次操作多个文件对象的Shell扩展  第三节-如何编写为文件对象弹出信息框的Shell扩展  第四节...

    shell脚本学习指南

    对UNIX的用户与系统管理者而言,编写Shell脚本是必须的工作,它可以让你快速地控制与定制任何UNIX系统的强大功能。有了Shell脚本,你可以结合基本的UNIX文本与文件处理命令来消化数据,以及自动化重复的工作。一旦你...

    shell基础12篇电子书shellchoki.chm

    主要内容: shell基础 基本介绍,环境,选项,特殊字符 shell变量 用户定义变量,环境变量,位置变量(shell 参数) shell script编程 条件测试,循环及重复控制 .shell定制

    shell programming

    介绍:Bourne Shell 基础及其他很多有用的特性,shell编程及组织。 主要内容: .shell基础 基本介绍,环境,选项,特殊字符 .shell变量 用户定义变量,环境变量,位置变量(shell 参数) ....shell定制

    Windows Shell扩展编程完全指南(配套代码).zip

    Windows Shell扩展编程完全指南 第一节 - 一步步教你如何编写Shell扩展 第二节 - 如何编写一次操作多个...第八节-如何使用信息栏扩展添加定制的信息栏到资源浏览器详细资料列表中 Windows Shell扩展编程完全指南

    ShellScript

    对UNIX的用户与系统管理者而言,编写Shell脚本是必须的工作,它可以让你快速地控制与定制任何UNIX系统的强大功能。有了Shell脚本,你可以结合基本的UNIX文本与文件处理命令来消化数据,以及自动化重复的工作。一旦你...

    csapp shell lab 满分原创(北大&cmu;) 仅供参考,请勿抄袭

    csapp shell lab 满分原创(北大&cmu;) 仅供参考,请勿抄袭

    WES-7(嵌入式Winows7)定制shell步骤

    Windows Embedded Standard 7 - Custom Shell 嵌入式Windows7定制Shell应用介绍文档(英文),文档描述了如何定制操作系统启动界面、欢迎画面、登录交互接口、默认启动程序等

    Classic Shell(Win 10开始菜单定制工具) 4.2.5 中文版

    Classic Shell(Win 10开始菜单定制工具) 4.2.5 中文版

    Windows Shell扩展编程完全指南

    第八节-如何使用信息栏扩展添加定制的信息栏到资源浏览器详细资料列表中 示范了如何添加定制信息栏到Windows 2000资源浏览器的详细信息列表. 所附的例子添加若干个信息栏以显示MP3文件的资料标签数据 (改扩展仅...

    Windows Shell扩展编程完全指南(含代码)

    第四节 - 如何编写提供定制拖放功能的Shell扩展 第五节-如何编写添加属性页到文件属性对话框中的Shell扩展 第六节-如何编写定制”发送到”菜单的Shell扩展 第七节-如何编写自画上下文菜单项的Shell扩展, 以及...

    Shell脚本专家指南

    因此,《Shell脚本专家指南》对于那些希望在案头放一本案例精选的读者来说,将会是最佳的参考资料。 这里囊括了所有你迫切希望解决、却又无处发问的Shell脚本问题。 作者简介 作者:(美国)彼得(Ron Peters) 译者...

    elasticsearch定制备份数据shell脚本.zip

    elasticsearch定制备份数据shell脚本,全程可配置化,异常发邮件提醒

    shell学习脚本指南-1(中文完整版)

    对UNIX的用户与系统管理者而言,编写 Shell脚本是必须的工作,它可以让你快速地控制与定制任何UNIX系统的强大功能。有了Shell脚本,你可以结合基本的UNIX文本与文件处理命令来消化数据,以及自动化重复的工作。一旦...

    shell学习脚本指南-3(中文完整版)

    对UNIX的用户与系统管理者而言,编写 Shell脚本是必须的工作,它可以让你快速地控制与定制任何UNIX系统的强大功能。有了Shell脚本,你可以结合基本的UNIX文本与文件处理命令来消化数据,以及自动化重复的工作。一旦...

    WinShell

    WinShell v5.0 - Windows平台上最精巧的Telnet服务器软件 作者:孤独剑客 主页:http://www.janker.org 功能简述 ======== WinShell是一个运行在Windows平台上的Telnet服务器软件,主程序是一个仅仅...

Global site tag (gtag.js) - Google Analytics