Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: CL | DM;

Вниз

завершение работы windows   Найти похожие ветки 

 
mutabor   (2004-05-24 11:36) [0]

какое сообщение посылается приложению при завершении работы windows?( отловить с целью организации корректного завершения работы приложения)


 
Anatoly Podgoretsky ©   (2004-05-24 11:38) [1]

WM_ENDSESSION


 
WebErr ©   (2004-05-24 17:51) [2]

Удалено модератором
Примечание: Offtopic


 
Sur ©   (2004-05-24 21:24) [3]

Windows посылает сообщение WM_QUERYENDSESSION всем приложениям и ожидает ответ.
Каждое приложение получает сообщение и возвращает одну из величин: не равную нулю - приложение готово завершить свою работу, 0 - приложение не может завершить свою работу.
Если одно из приложений возвращает 0, Windows не завершает свою работу, а снова рассылает всем окнам сообщение, на этот раз WM_ENDSESSION.
Каждое приложение должно снова подтвердить свою готовность завершить работу, поэтому операционная система ожидает ответа TRUE, резонно предполагая, что оставшиеся приложения с момента предыдущего сообщения закрыли свои сессии и готовы завершить работу.


 
Danemon   (2004-05-25 01:02) [4]

А есть ли способ отключать компоненты ПК? То бишь монитор, винчестер по-отдельности и по желанию?


 
Danemon   (2004-05-25 01:04) [5]

Это я взял с какого-то сайта.
-----------------
Как отправить машину в состояние StanBy
Вот кусок кода, который это делает. Для перехода в состояние StandBy нужно вызвать процедуру StandBy. Для «заморозки» системы – Hibernate
function AdjustTokenPrivileges(TokenHandle : THandle; DisableAllPrivileges : BOOL; NewState : PTOKENPRIVILEGES;
       BufferLength : DWORD;PreviousState : PTOKENPRIVILEGES; ReturnLength : DWORD) : BOOL;
       stdcall; external "advapi32.dll" name "AdjustTokenPrivileges";
function GetShutdownPriv : boolean;
var
   hToken : THandle;
   tkp, p_tkp : TTokenPrivileges;
   ReturnLength : DWORD;
   procedure error(msg : string);
   begin
     MessageBox(0, @msg[1], "Error", MB_ICONERROR or MB_OK);
   end;
begin
 // Get a token for this process.
 if not OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin
     error("OpenProcessToken");
     Result := false;
     exit;
 end;
 // Get the LUID for the shutdown privilege.
 LookupPrivilegeValue(nil, "SeShutdownPrivilege", tkp.Privileges[0].Luid);
 tkp.PrivilegeCount := 1;  // one privilege to set
 tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
 // Get the shutdown privilege for this process.
 AdjustTokenPrivileges(hToken, FALSE, @tkp, 0, nil, ReturnLength);
 // Cannot test the return value of AdjustTokenPrivileges.
 if (GetLastError <> ERROR_SUCCESS) then begin
    error("AdjustTokenPrivileges");
    Result := false;
    exit;
 end;
 Result := true;
end;
//отправляет машину в режим ожидания
procedure StandBy;
begin
   if GetShutdownPriv then
       SetSystemPowerState(TRUE, FALSE);
end;
//отправляет машину в режим Hibernation (все содержимое памяти сливается на диск)
procedure Hibernate;
begin
   if GetShutdownPriv then
       SetSystemPowerState(FALSE, FALSE);
end;



Страницы: 1 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.066 c
4-1085242365
NLO
2004-05-22 20:12
2004.07.04
ID


1-1087714730
Лёха
2004-06-20 10:58
2004.07.04
нахождение файла


14-1087145399
able
2004-06-13 20:49
2004.07.04
google.ru


3-1086783370
Лера
2004-06-09 16:16
2004.07.04
Direct Oracle Access


8-1082187207
ARY
2004-04-17 11:33
2004.07.04
Графика