Chinaunix首页 | 论坛 | 博客
  • 博客访问: 376271
  • 博文数量: 214
  • 博客积分: 770
  • 博客等级: 军士长
  • 技术积分: 1969
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-08 01:22
文章分类

全部博文(214)

文章存档

2013年(110)

2012年(104)

我的朋友

分类: Windows平台

2013-03-27 16:50:57

前几天转载了一篇关于WinCE开机自启动的程序,网上找到的资料基本都一致,都以一个MyApp.exe的程序作为例子,我自己也利用之前的程序参照做了一遍,发现基本没问题,
但我在测试其他一些需要带配置文件之类的程序时发现了一个问题,就是当要启动的这个软件所带的配置信息过大时,系统maekimg之后产生的NK.BIN文件过大,在对系统升级时发现升级不了(目前是在我的板上出现的,其他板不一定会有此问题)。为此自己在这做个操作记录方便日后有需要时不再犯同样错误,对此种情况,可以利用网上一段从SD卡启动的代码来解决。
int WINAPI WinMain(HINSTANCE hInstance,

                   HINSTANCE hPrevInstance,
                   LPTSTR    lpCmdLine,
                   int       nCmdShow)
{
 PROCESS_INFORMATION processinfo;
 WIN32_FIND_DATA fd;
HANDLE hd=INVALID_HANDLE_VALUE;
  lpCmdLine =_T(" Card\\ShipNavigation\\ShipNavigation.exe");//根据相应要启动的程序修改此路径
int iCount = 20;//这个值要设得足够大,否则可能等不到SD卡的加载

//等待SD卡文件系统加载完成
while(iCount--)
{
hd=::FindFirstFile(lpCmdLine,&fd);
Sleep(500);
if(INVALID_HANDLE_VALUE!=hd) break;
}
if(0==iCount)
{
 CreateProcess(L");
 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;
}

我在这次测试中发现只有在platform.reg中加入

[HKEY_LOCAL_MACHINE\init]                
"Launch80"="autoRun.exe"         
"Depend80"=hex:1e,00 
重现 Make Image 才能正确启动。网上说通过快捷方式也可启动我一直没成功。  

此外如果运行程序需要一些配置文件,做法跟把APP加入映像文件一样,可以通过创建文件夹和文件的方式,把所需要的内容都加载进去。
阅读(1840) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~