Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Вниз

завершение работы 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.037 c
1-1087816507
Andr999
2004-06-21 15:15
2004.07.04
RXLIB


14-1087451954
arbin
2004-06-17 09:59
2004.07.04
Россия-Португалия - 0:2


3-1086853755
Alex_x
2004-06-10 11:49
2004.07.04
Как сравнить две базы Акссесс


6-1083959776
Prankster
2004-05-07 23:56
2004.07.04
post


1-1087820428
zep
2004-06-21 16:20
2004.07.04
StringGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский