Главная страница
    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.46 MB
Время: 0.031 c
14-1087457948
SPeller
2004-06-17 11:39
2004.07.04
Проблемы с MSDN


14-1087159105
Oxy
2004-06-14 00:38
2004.07.04
Report


14-1087114587
GanibalLector
2004-06-13 12:16
2004.07.04
Репликации в БД ...


1-1087525442
Гена
2004-06-18 06:24
2004.07.04
Как экстрактить иконку из exe?


1-1087510199
Mozart
2004-06-18 02:09
2004.07.04
(повторный запуск приложения) - Stack Overflow в вин98





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский