如何判断WinCE系统刚刚进行了Warm Boot

oranjes_snjp 2008-02-22 10:59:57
程序是随通过\\HKEY_LOCAL_MACHINE\\init随系统启动的,此时需完成操作A。程序如果被关闭后,可以再通过快捷方式等再启动,此时需完成操作B。
那么如何程序如何判断是随系统启动的,还是通过快捷方式等其他方式启动,请指教!
我想到一种方法,就是随系统启动前,先启动另外一个进程X。程序启动后判断进程X是否存在,如果X进程存在,则杀掉X进程,执行操作A,否则执行操作B。
但这方法好像很笨,很麻烦啊,有没有其他更优美的办法呢?
...全文
203 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxy_9761 2008-02-23
  • 打赏
  • 举报
回复
区别:
快捷方式启动的程序没有参数,而通过init注册表运行的程序,会有参数.可以通过GetCommandLine()函数获取。
这样,直白一点:
if (GetCommandLine() == NULL)
{
// 快捷方式起动
}
else
{
// Init注册表方式起动的
}

注意,这个是简单的示例,因为快捷方式也是可以跟命令行参数的。实际使用时,最好进行判断。
sxy_9761 2008-02-23
  • 打赏
  • 举报
回复
这个参数就是LaunchXX里XX代表的数值。验证完毕!
oranjes_snjp 2008-02-23
  • 打赏
  • 举报
回复
to sxy_9761:
谢谢,你说的这些我已实现了,但仍然不能完成要求,因为我这程序不依赖init中其他随系统启动的程序运行,并且如果通过快捷方式,Boot随系统启动的程序都是已启动的,还是无法判断两种不同的启动方式啊
oranjes_snjp 2008-02-23
  • 打赏
  • 举报
回复
主要功能是一样的,
Main()参数如何区别呢? 快捷方式生成时,添加启动参数?那么这种快捷方式如何在打包时制作。
sxy_9761 2008-02-23
  • 打赏
  • 举报
回复
通过\\HKEY_LOCAL_MACHINE\\init启动的程序,运行时会有参数传进来。
\\HKEY_LOCAL_MACHINE\\init键下,你仔细看就会发现有类似:
"Launch50"="explorer.exe"
"Depend50"=hex:14,00, 1e,00
注意这里的"Depend50"=hex:14,00, 1e,00 是依赖于键值为"Launch20"与"Launch30"的程序。
比如这里的"Launch50"所指的explore.exe完成运行后须调用SignalStarted()来告诉系统让在此处依赖于Launch50的其它程序可以运行了。

一堆废话不知你是否看得明白。简单点说HKEY_LOCAL_MACHINE\init下自动运行的程序是系统带指定参数运行的。这个参数估计就是LaunchXX里XX代表的数值。稍后我验证下再贴上来。
91program 2008-02-23
  • 打赏
  • 举报
回复
一个程序,完成二个功能?
为什么不分成二个程序,或使用Main()中的参数来区别!!!

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧