我想在关机前保存我的机器状态(对于不支持休眠的机器)。
本质上,我正在尝试模仿 Windows 休眠功能。当机器重新打开时,它看起来与关闭之前完全一样。
关于使用托管代码执行此任务的任何想法?
当前使用/考虑使用 Windows XP Service Pack 2。
对于在您的计算机上运行的所有应用程序,这根本不可能使用纯托管代码。事实上,即使使用非托管代码,您也将度过一段难熬的时光。我不会说这是不可能的,但可能非常困难且耗时。
以下是一些帮助您入门的有用资源:
Windows 内核上的 Arun Kishan
http://www.dotnetrocks.com/default.aspx?ShowNum=434
核心转储
http://en.wikipedia.org/wiki/Core_dump
设置上下文
http://en.wikipedia.org/wiki/Setcontext
Raymond Chen 谈“休眠”单个进程
http://blogs.msdn.com/oldnewthing/archive/2004/04/20/116749.aspx
对于您自己的应用程序,最好的办法是将您希望能够恢复的所有状态隔离到一组可序列化的类中。然后,当您的应用程序被卸载(或定期)时,使用 XMLSerializer 将此数据保存到磁盘。当您的应用程序再次加载时,再次使用 XMLSerializer 来重新处理您的类保存应用程序的状态,并使用此信息将用户界面返回到以前的状态。如果您有复杂的用户界面,这可能是一项耗时的任务。
在程序退出之前,您必须自己保存它。您可以将所有窗口状态序列化为 xml 并将其保存在某个文件中。当您的应用程序再次启动时,您可以重新加载设置。
也许Vista 应用程序恢复 API确实有帮助。不过需要Vista。