wince6.0开机自启动应用程序

1、在VS2005下建立一个Win32智能设备项目,取名为ShellExe,编译如下代码:

int WINAPI WinMain(HINSTANCE hInstance,

  HINSTANCE hPrevInstance,

  LPTSTR    lpCmdLine,

  int       nCmdShow)

{

 WIN32_FIND_DATA fd;

 HANDLE hd=INVALID_HANDLE_VALUE;

 int iCount = 20;

 while(iCount--)

 {

  hd=::FindFirstFile(lpCmdLine,&fd);

  Sleep(500);

  if(INVALID_HANDLE_VALUE!=hd) break;

 }

 if(0==iCount) return 0;

 FindClose(hd);

 SHELLEXECUTEINFO ShExeInfo={0};

 ShExeInfo.cbSize=sizeof(SHELLEXECUTEINFO);

 ShExeInfo.fMask=SEE_MASK_NOCLOSEPROCESS;

 ShExeInfo.hwnd=NULL;

 ShExeInfo.lpVerb=NULL;

 

 ShExeInfo.lpFile=lpCmdLine;

 ShExeInfo.lpParameters=L"";

 ShExeInfo.lpDirectory=NULL;

 ShExeInfo.nShow=SW_SHOW;

 ShExeInfo.hInstApp=NULL;

 

 ShellExecuteEx(&ShExeInfo);

 return 0;

}

 

  生成ShellExe.exe的可执行文件,此段代码主要功能是查找指定的应用程序,然后执行;下面这段代码可以保证在SD卡文件系统正确加载后才去执行应用程序。

 while(iCount--)

{

 hd=::FindFirstFile(lpCmdLine,&fd);

 Sleep(500);

 if(INVALID_HANDLE_VALUE!=hd) break;

}

文件的名称和路径由命令行参数指定:ShExeInfo.lpFile=lpCmdLine。

2、 新建一个快捷方式

新建一个文本文档,内容为:42#/Windows/ShellExe.exe /NandFlash/MyApp.exe,保存后,更改文件名为Autorun.lnk。其中/NandFlash/MyApp.exe应用程序的绝对路径。

3、将快捷方式Autorun.lnk添加到自启动目录

在AT91SAM9263EK_ARMV4I_Release下的 project.dat里加入如下内容:

Directory("/Windows/启动"):-File("Autorun.lnk","/Windows/Autorun.lnk")

 

4、选择Make Run-time Image生成映像XIP.nb0,然后将前两步得到的ShellExe.exe和Autorun.lnk拷贝到C:/WINCE600/OSDESIGNS/sam9263/sam9263/RelDir/AT91SAM9263EK_ARMV4I_Release目录下。

 

5、将MyApp.exe和Autorun.lnk添加到NK里,方法是在ce..bib文件的Files模块下加入如下内容:

ShellExe.exe  C:/WINCE600/OSDESIGNS/sam9263/sam9263/RelDir/AT91SAM9263EK_ARMV4I_Release/ShellExe.exe  NK S

Autorun.lnk  C:/WINCE600/OSDESIGNS/sam9263/sam9263/RelDir/AT91SAM9263EK_ARMV4I_Release/Autorun.lnk   NK S

注意:ShellExe.exe的属性S表示系统文件

 

6、生成XIPKERNEL.nb0文件

   修改ce.bib文件,在MEMORY处,把RAM的配置改成RAM 8039e000 03862000 RAM。

在vs2005下执行“生成”--》“Open Release Directory in Build Window”,在命令提示符下执行romimage ce.bib,可生成XIPKERNEL.bin。

在提示符下执行viewbin -r XIPKERNEL.bin,可显示该XIPKERNEL.bin文件的起始位置和长度。

在提示符下执行cvrtbin -a 0x起始位置 -l 0x长度 -w 32 -r XIPKERNEL.BIN,此步骤执行后生成XIPKERNEL.nb0。

烧写xip.nb0和xipkernel.nb0到板子,然后把应用程序放到NandFlash目录下,改名为MyApp.exe,然后重启就可看到应用程序自动运行了。

7、总结

  这种方法用起来比较方便,ShellExe.exe不用每次都重新编译,只要根据应用程序路径修改Autorun.lnk即可,可以加载Flash、U盘、SD卡里的应用程序。调试及升级应用程序就不用重新烧写内核了。

你可能感兴趣的:(wince,编程)