• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Выключение Компьютера По Таймеру

Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,562
Баллы
155
Недавно я рассказывал о том как программно выключить компьютер. Но анализируя поисковые запросы, я понял, что читателя интересует выключение компьютера по таймеру.

Я покажу небольшой пример, как это можно сделать, его легко понять и переделать под свои нужды. Итак, создайте проект. На форме разместите компонент Timer, Edit и Button. У Timer свойство Enabled поставьте в false, у Edit NumbersOnly в true (чтобы ввести можно было только цифры).По нажатию кнопки мы будем включать таймер на то количество минут, которое указано в Edit. По истечению времени компьютер будет выключен.

Подключите модуль ShellAPI.

Обработчик таймера будет следующий:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   ShellExecute(handle, nil,'shutdown',' -s -t 00','', SW_SHOWNORMAL); // Команда выключения
   Enabled:=false;
end;
По истечению времени будет послана команда на выключение.

По нажатию кнопки настраиваем интервал таймера и включаем его. Интервал берем из Edit. Стоит напомнить, что время в таймере измеряется в миллисекундах, и для того, чтобы получить минуты нам нужно умножить значение на 60000.
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
   Timer1.Interval:=StrToInt(Edit1.Text)*60000; // умножаем на 600000, чтобы получить минуты
   Timer1.Enabled:=true;
end;
Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShellAPI, StdCtrls;
type
  TForm1 = class(TForm)
    Bshutdown: TButton;
    BCancel: TButton;
    procedure BshutdownClick(Sender: TObject);
    procedure BCancelClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
 end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
// Событие по нажатию кнопки "Выключить"
procedure TForm1.BshutdownClick(Sender: TObject);
begin
  ShellExecute(handle, nil,'shutdown',' -s -t 00','', SW_SHOWNORMAL);
end;
// Событие по нажатию кнопки "Отменить"
procedure TForm1.BCancelClick(Sender: TObject);
begin
  ShellExecute(handle, nil,'shutdown',' -a','', SW_SHOWNORMAL);
end;
end.
Параметры функции shutdown.
В нашем примере функции передаются параметры "-s -t 00". Параметр "-s" обозначает, что мы хотим выключить компьютере. Параметр "-t 00" - что мы хотим это сделать немедленно.

Разберем все возможные параметры.

shutdown [-l] [-s] [-r| [-a] [-f] [-m [\\имя_компьютера]] [-t xx] [-c "сообщение"]

  • Функция с параметром [-l] осуществит выход из текущего пользователя системы
  • [-s] Означает, что мы хотим выключить компьютер
  • [-r| Перезагрузка компьютера
  • [-f] Закрыть все запущенные приложения
  • [-m [\\имя_компьютера]] - Выключить компьютер из сети
  • [-t xx] отложить выключение на XX секунд
  • [-c "сообщение"] вывести текст сообщения
 
Вверх Снизу