阅读:1725回复:7
请问CE系统启动时如何自动运行在SD Card里的应用程序?自动运行在SD Card里的应用程序与自动运行系统中的应用程序是不一样的,不需要制定到NK.bin里,并且要先要系统识别了SD Card后,再运行里面的程序。 试过了配置platform.reg或者common.reg,在[HKEY_LOCAL_MACHINE\init]段添加如下内容: "Launch80"="\SD Card\TestStartUp.exe" "Depend80"=hex:14,00 发现系统并没有去自动运行应用程序,不知道是什么原因,后来改用快捷方式法,系统尝试自动运行应用程序,但找不到应用程序,估计是因为在SD Card没加载成功时就尝试去运行应用程序,所以找不到。 请各位高手指点一下,如何才能系统启动时自动运行在SD Card里的应用程序。 |
|
沙发#
发布于:2007-07-05 17:19
可以在Nk.bin中做一个小程序,该小程序循环运行SD卡中的程序,直到成功运行为止,或是超时。然后再注册表中设置自动运行该小程序。伪代码如下
for( int i=0; i<10;i++ ) { if( runapp("\\Storage Card\\TestStartUp.exe")) break; Sleep(100); } |
|
板凳#
发布于:2007-07-06 09:07
谢谢楼上的指点,只是不知道运行另一个程序的函数是什么啊?
|
|
地板#
发布于:2007-07-06 12:49
CreateProcess()
|
|
地下室#
发布于:2007-07-06 13:56
设置注册表是可以的,好像你的路径写错了,应该是 \\
运行程序还可以用ShellExecuteEx 比如: SHELLEXECUTEINFO shInfo; memset(&shInfo, 0, sizeof(SHELLEXECUTEINFO)); shInfo.cbSize = sizeof(SHELLEXECUTEINFO); shInfo.fMask = SEE_MASK_NOCLOSEPROCESS; shInfo.lpFile = _T("\\SD Memory\\任务管理.exe"); //你要调用的应用程序 shInfo.lpParameters = NULL; shInfo.lpDirectory = _T("\\SD Memory"); //程序存储的目录 ShellExecuteEx(&shInfo); |
|
|
5楼#
发布于:2007-07-06 15:15
已经解决了,和楼上的方法一样,只是没再试注册表自起的方法,还是用快捷方式的方法。
不知道用注册表的方式是否一定要把应用程序制定到NK.bin里,不能只指定路径? |
|
6楼#
发布于:2007-07-11 10:02
直接在注册表中指定SD卡中的路径启动不起来的原因是:那个时候SD卡驱动还没有加载,或者SD卡的文件系统还没准备好。所以需要把一个很小的应用程序放在NK.bin中,它作为引子来启动SD卡中的程序。
|
|
7楼#
发布于:2007-07-13 09:34
楼上说的有道理,但我也曾试过把一个应用程序放在NK.bin中,用修改注册表的方法让这个应用程序自起,但是没有成功,不知道哪里没做对,请成功过的高手们详细指点一二,谢谢!
|
|