Главная страница
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.044 c
11-1076135398
Ajax
2004-02-07 09:29
2004.07.04
Компонент для работы с ZIP архивами


1-1087906257
Anton.
2004-06-22 16:10
2004.07.04
TComboBox


8-1082449330
Sanchos
2004-04-20 12:22
2004.07.04
Воспроизвести mp3?


9-1079155881
Zak3D[@Tm]
2004-03-13 08:31
2004.07.04
Ограничение движения курсора


4-1084810876
headerr
2004-05-17 20:21
2004.07.04
Как отключить стрелки Up Down.