![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перезагрузка [D7, XP]
Daedr © (2007-08-16 16:28:00)Подскажити, как перезагрузить комп при выполнении условия "ProgressBar1.Position=ProgressBar1.max"?
Cj (2007-08-17 11:02:00) [1]Можно еще csrss.exe завершить :)
DevilDevil (2007-08-17 10:03:00) [2]> Eraser © (16.08.07 19:50) [10]
1) в те давние времена поиска, я не знал о существовании Гугла
2) какой то крутой код я всё же нашёл... только он не работал :)
3) бегло просмотрел линки, такой крутой как уEga23, не нашёл
Bonus) ты понял, почему приVisible := true;может возникать подвисание?
Eraser (2007-08-16 19:50:00) [3]
> DevilDevil © (16.08.07 18:37) [9]
военная тайна
http://www.google.ru/search?hl=ru&q=delphi+%D0%B2%D1%8B%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C+%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=
DevilDevil (2007-08-16 18:37:00) [4]> Ega23 © (16.08.07 17:14) [6]
Спасибо, опробовал - всё работает.
А то с ExitWindows под XP не получалось, только завершить сеанс.
+ где то когда то надыбал код перезагрузки... выключения до сегодняшнего дня не видел.
День точно не прошёл зря!
Ega23 (2007-08-16 17:16:00) [5]Точнее, вот такой код был для аварийного завершения при определённом уровне зарядки батарей:
function TStandartUPS.ShutdownOS: Boolean;
const
SE_SHUTDOWN_NAME='SeShutdownPrivilege';
var
hToken: THandle;
tkpNew, tkpPrevious: TTokenPrivileges;
iLength: Cardinal;
begin
Result:=False;
// Получаем токен процесса
if not OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
Exit;
// Получаем LUID для привилегии завершения работы системы
LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, tkpNew.Privileges[0].Luid);
tkpNew.PrivilegeCount:=1; {установка одной привилегии}
tkpNew.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
// Получаем привилегию завершения работы системы для процесса
iLength:=SizeOf(TTokenPrivileges);
AdjustTokenPrivileges(hToken, False, tkpNew, SizeOf(TTokenPrivileges),
tkpPrevious, iLength);
// Невозможно проверить возвращаемое значение функции AdjustTokenPrivileges
if GetLastError<>ERROR_SUCCESS then
Exit;
// Завершаем работу системы и заставляем все приложения закрыться
Result:=ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0);
end;
//******************************************************************************
Юрий Зотов (2007-08-16 17:15:00) [6]> DevilDevil © (16.08.07 17:12) [5]
Насколько помню, так же, только флаг другой указывается.
Ega23 (2007-08-16 17:14:00) [7]
> перезагрузка - ладно... а как выключить, кто-нибудь знает?
ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0);?
DevilDevil (2007-08-16 17:12:00) [8]перезагрузка - ладно... а как выключить, кто-нибудь знает?
Юрий Зотов (2007-08-16 17:04:00) [9]> Сергей М. © (16.08.07 16:46) [3]
Это он делает диалог типа "компьютер будет перезагружен через N секунд". Например, для инсталлятора.
Сергей М. (2007-08-16 16:46:00) [10]Ну и нахрен мне надо, чтобы какой-то там Daedr перезагружал мой комп, когда у этого самого Daedr'а приключился катаклизм вида "ProgressBar1.Position=ProgressBar1.max" ?)
Anatoly Podgoretsky (2007-08-16 16:41:00) [11]> Daedr (16.08.2007 16:28:00) [0]
Ко мне на сайт
Ega23 (2007-08-16 16:30:00) [12]Также, как и при условии Label1.caption='RTFM'