Показать сообщение отдельно
Старый 12.09.2005, 18:01     # 7
Larry
Member
 
Аватар для Larry
 
Регистрация: 18.07.2005
Пол: Male
Сообщения: 232

Larry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форуме
Lightbulb

Vanhelsing, не пишу я пока на ассемблере. А программулина просто была на диске. Изврат - писать подобную утилиту на ассемблере. Есть же API-функция, читайте Windows SDK:

Цитата:
BOOL ExitWindowsEx(

UINT uFlags, // shutdown operation
DWORD dwReserved // reserved
);


Parameters

uFlags

Specifies the type of shutdown. This parameter must be some combination of the following values:

Value Meaning

EWX_FORCE Forces processes to terminate. When this flag is set, Windows does not send the messages WM_QUERYENDSESSION and WM_ENDSESSION to the applications currently running in the system. This can cause the applications to lose data. Therefore, you should only use this flag in an emergency.

EWX_LOGOFF Shuts down all processes running in the security context of the process that called the ExitWindowsEx function. Then it logs the user off.

EWX_POWEROFF Shuts down the system and turns off the power. The system must support the power-off feature.Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.

EWX_REBOOT Shuts down the system and then restarts the system. Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.

EWX_SHUTDOWN Shuts down the system to a point at which it is safe to turn off the power. All file buffers have been flushed to disk, and all running processes have stopped. Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.
То есть для нормального выключения Windows достаточно вставить следующий код: ExitWindowsEx (EWX_SHUTDOWN, 0). Как принять и обработать команду для выключения - это уже зависит от технических возможностей и предпочтений программиста. Для того, чтобы программно можно было вывести компьютер из ждущего режима, достаточно войти в свойства сетевой карты -- "Управление электропитанием" и поставить галочку "Разрешить устройству вывод компьютера из ждущего режима". Ну и программой посылать какой-либо пакет сетевой карте...
Larry вне форума