Форум: "Система";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];
ВнизЗавершение работы Windows Найти похожие ветки
← →
Volhv (2003-01-29 11:00) [0]Доброго всем дня!
Проблема: запущено Delphi-приложение. При попытке перезагрузить или завершить работу Windows из памяти выгружаются некоторые процессы, а перезагрузка (завершение работы) не происходит.
Ловлю сообщение WM_QUERYENDSESSION:
procedure TFщкь1.WMQueryEndSession(var Msg:TWMQueryEndSession);
begin
inherited;
Msg.Result:=1;
end;
Бесполезно. Мое приложение не закрывается, Windows не завершает работу. Делал еще:
procedure TFщкь1.WMQueryEndSession(var Msg:TWMQueryEndSession);
begin
inherited;
Msg.Result:=1;
Close;
end;
Мое приложение закрывается, Windows НЕ завершает работу.
Есть какие-нибудь соображения на этот счет?
← →
ККВ (2003-01-29 12:25) [1]Комментарий от "Макса" (halyavshik@mailru.com)
небольшое дополнение как выключить компутер с NT корректно компилируется в Delphi5 в 4 какие-то
проблемы с описанием констант привиллегий в других версиях Delphi не проверял:
program NTShutdown;
uses windows;
var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then begin
LookupPrivilegeValue(nil, "SeShutdownPrivilege",
tkp.Privileges[0].Luid);
tkp.PrivilegeCount:=1; // one privelege to set
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength)
then
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
end;
end.
← →
Volhv (2003-01-29 13:07) [2]Так пробовал - не выходит. У меня Delphi 6. Компилируется нормально.
Вообще, проблема только под Windows 2000 (NT не знаю, наверное, тоже)
← →
Volhv (2003-01-29 13:52) [3]Спасибо, уже решил! Помогло:
procedure TForm1.WMQueryEndSession(var Msg:TWMQueryEndSession);
begin
inherited;
Msg.Result:=1;
CallTerminateProcs;
Halt;
end;
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.008 c