обрабатывать запросы пользователя на выход из системы или выключение компьютера в WindowsME

Мне нужно написать приложение C#, работающее в WindowsME. Да, я имею в виду ту самую давно забытую операционную систему Microsoft. Моя программа не требует взаимодействия с пользователем, а поскольку WindowsME не поддерживает сервисы, это будет консольное приложение. Кроме того, он будет использоваться в более современных операционных системах, где пользователь может выбрать, запускать его как консольное приложение или устанавливать как службу Windows. Теперь предположим, что программное обеспечение работает на WinME, и пользователь решает выйти из системы или выключить машину без предварительного выхода из моего программного обеспечения. WinME жалуется на то, что моя программа все еще работает, и спрашивает, следует ли завершить процесс. Помимо плохого пользовательского опыта, это означает, что приложение не закрывается должным образом.

Поэтому я ищу способ быть проинформированным, если пользователь выходит из системы или хочет выключить машину, чтобы иметь возможность сначала правильно завершить работу моего программного обеспечения.


person skylap    schedule 14.04.2010    source источник
comment
Поддерживается ли среда выполнения .NET в Windows ME? Это работает? Я действительно думал, что самым старым вариантом рабочего стола была Windows XP.   -  person Tom Cabanski    schedule 15.04.2010
comment
.NET 2.0 поддерживается для WinME и даже для Win98. Программное обеспечение работает на ME так же хорошо, как и на Vista. Только поведение при выключении является проблемой на ME.   -  person skylap    schedule 15.04.2010


Ответы (2)


Я думаю, что WM_ENDSESSION поддерживается Windows ME, поэтому я думаю, вам следует попытаться перехватить это событие. Это тот, который отправляется во все окна верхнего уровня, когда сеанс Windows заканчивается (через выход из системы или завершение работы).

person Hans Olsson    schedule 14.04.2010
comment
Я думаю, что WM_ENDSESSION появился вместе с win2000 (ветвь Windows NT). Я не помню, было ли это когда-либо в win9x. - person dkackman; 15.04.2010
comment
Я тоже не уверен, я нашел несколько ссылок, которые, кажется, указывают на то, что кто-то использовал его в Win98, но я не нашел ничего официального, и не похоже, что у меня есть тестовая система Win98/WinME, чтобы попробовать это. вне :) - person Hans Olsson; 15.04.2010

Вы пытались обрабатывать SystemEvents.SessionEnding/SystemEvents.SessionEnded? Чтобы использовать это, вам нужно будет создать скрытую форму, я считаю, что пример MSDN демонстрирует это.

http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.aspx

person Chris Taylor    schedule 14.04.2010