Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 22.01.2010, 16:11   #1
Vold.khv
 
Регистрация: 22.01.2010
Сообщений: 7
По умолчанию object pascal; код программы выключающей комп в заданное время

Решил сделать прогу выключающую комп в заданное время.
На форме пара лейблов, кнопка, и вот требуется задействовать команду\процедуру которая будет корректно завершать работу компа с завершением всех процесов и прочее... ну как обычное выключение.
На прасторах инета нашел такую процедеру
Код:
procedure ShutdownComputer;
var
  ph: THandle;
  tp, prevst: TTokenPrivileges;
  rl: DWORD;
begin
   OpenProcessToken( GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, ph );
   LookupPrivilegeValue( nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid );
   tp.PrivilegeCount := 1;
   tp.Privileges[0].Attributes := 2;
   AdjustTokenPrivileges( ph, FALSE, tp, SizeOf( prevst ), prevst, rl );
   ExitWindowsEx( EWX_SHUTDOWN or EWX_POWEROFF, 0 );
end;
Хочу узнать насколько она корректно завершает работу компа и можно ли ее использовать в написании мною желаемого кода!?
Со всем остальным думаю справлюсь, заранее спс =)

Последний раз редактировалось Stilet; 22.01.2010 в 16:23.
Vold.khv вне форума Ответить с цитированием
Старый 22.01.2010, 16:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
Хочу узнать насколько она корректно завершает работу компа
Тупо вырубает все программы принудительно. При этом могут быть потери данных.

Кстати в object pascal этот код работать не будет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.01.2010, 17:16   #3
Vold.khv
 
Регистрация: 22.01.2010
Сообщений: 7
По умолчанию

Цитата:
Кстати в object pascal этот код работать не будет.
проверил - работает...
проверял в дельфи7

Цитата:
Тупо вырубает все программы принудительно. При этом могут быть потери данных.
а как нибудь ее улучшить\исправить можно? или мб есть альтернативные варианты?
(в голове крутится одна: SendMessage(FindWindow('Progman','P rogram Manager'),WM_CLOSE, 0, 0) - вызваем окно завершения работы и нужно дописать, по возможности, еще команду "онклик" на кнопку завершения работы )
Vold.khv вне форума Ответить с цитированием
Старый 25.01.2010, 07:27   #4
Vold.khv
 
Регистрация: 22.01.2010
Сообщений: 7
По умолчанию

-------------------------------up-----------------------------
Vold.khv вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод изображений из папки через заданное время в секундах на PHP сайте Killer_djon JavaScript, Ajax 15 18.01.2013 06:19
Перевод кода из Pascal в Object Pascal zemskov77 Общие вопросы Delphi 1 03.01.2009 09:37
Выполнение действия в заданное время WOWan234 Помощь студентам 6 02.05.2007 00:52


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840