当Windows自动安装更新并自动重新启动时,某些程序(如Microsoft Word)会自动恢复并恢复其原始状态(Word将打开之前打开的相同文档)。我的程序如何做到这一点?有API吗?
如果是常规的用户启动重启,我不希望我的程序自动返回 - 这对用户来说看起来很奇怪。但是如果用户在睡觉时让我的程序打开并且Windows在半夜重新启动更新,我希望用户早上回到他们的计算机并仍然看到我的程序正在运行。
我关心Window 7及以上版本。我将问题标记为C#,因为这是我正在使用的语言,但如果有一个C / C ++解决方案,我会编写适当的粘合代码并将其发布在此处供其他人使用。
答案 0 :(得分:2)
从vista开始我们可以用于这个单一的电话
RegisterApplicationRestart
(L"some cmd line", RESTART_NO_CRASH|RESTART_NO_HANG);
如果我们在XP下运行,我们可以(如@GSerg建议的那样)用
监听WM_ENDSESSION
消息
wParam != 0 && (lParam & ENDSESSION_CLOSEAPP) != 0
并在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
下注册自我重启(但不在Run
下!)
explorer.exe
在任何下一次启动时通过删除值键和exec应用程序来处理它。