Я хочу сохранить состояние своей машины перед выключением (для машин, которые не поддерживают спящий режим).
По сути, я пытаюсь имитировать функцию Windows Hibernate. Когда машина снова включается, она выглядит точно так же, как и предыдущая, и закрывается.
Любые идеи по использованию управляемого кода для выполнения этой задачи?
В настоящее время используется/рассматривается Windows XP с пакетом обновления 2 (SP2).
Для всех приложений, запущенных на вашем компьютере, это просто невозможно, используя чистый управляемый код. На самом деле, даже с неуправляемым кодом у вас будет адское время. Я бы не сказал, что это невозможно, но, вероятно, очень сложно и время для съемок.
Вот несколько полезных ресурсов, которые помогут вам начать:
Арун Кишань в Windows Kernel
http://www.dotnetrocks.com/default.aspx?ShowNum=434
Базовый дамп
http://en.wikipedia.org/wiki/Core_dump
SetContext
http://en.wikipedia.org/wiki/Setcontext
Раймонд Чен на "спящих" одиночных процессах http://blogs.msdn.com/oldnewthing/archive/2004/04/20/116749.aspx
Для вашего собственного приложения лучше всего выделить все состояние, которое вы хотели бы восстановить в наборе сериализуемых классов. Затем, когда ваше приложение будет выгружено (или периодически), сохраните эти данные на диск с помощью XMLSerializer. Когда ваше приложение снова загрузится, снова используйте XMLSerializer, чтобы повторно укрепить классы, поддерживающие состояние вашего приложения, и использовать эту информацию, чтобы вернуть пользовательский интерфейс в предыдущее состояние. Если у вас сложные пользовательские интерфейсы, это может быть трудоемкой задачей.
Возможно, API восстановления приложений Vista. Требуется Vista, хотя.
вам нужно будет сохранить его самостоятельно, прежде чем ваша программа выйдет. вы можете сериализовать все состояния окон в xml и сохранить их в каком-то файле. вы можете перезагрузить настройки, когда ваше приложение снова запустится.