- Регистрация
- 9 Май 2015
- Сообщения
- 1,562
- Баллы
- 155
Недавно я рассказывал о том как программно выключить компьютер. Но анализируя поисковые запросы, я понял, что читателя интересует выключение компьютера по таймеру.
Я покажу небольшой пример, как это можно сделать, его легко понять и переделать под свои нужды. Итак, создайте проект. На форме разместите компонент Timer, Edit и Button. У Timer свойство Enabled поставьте в false, у Edit NumbersOnly в true (чтобы ввести можно было только цифры).По нажатию кнопки мы будем включать таймер на то количество минут, которое указано в Edit. По истечению времени компьютер будет выключен.
Подключите модуль ShellAPI.
Обработчик таймера будет следующий:
По истечению времени будет послана команда на выключение.
По нажатию кнопки настраиваем интервал таймера и включаем его. Интервал берем из Edit. Стоит напомнить, что время в таймере измеряется в миллисекундах, и для того, чтобы получить минуты нам нужно умножить значение на 60000.
Параметры функции shutdown.
В нашем примере функции передаются параметры "-s -t 00". Параметр "-s" обозначает, что мы хотим выключить компьютере. Параметр "-t 00" - что мы хотим это сделать немедленно.
Разберем все возможные параметры.
shutdown [-l] [-s] [-r| [-a] [-f] [-m [\\имя_компьютера]] [-t xx] [-c "сообщение"]
Я покажу небольшой пример, как это можно сделать, его легко понять и переделать под свои нужды. Итак, создайте проект. На форме разместите компонент 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.
В нашем примере функции передаются параметры "-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 "сообщение"] вывести текст сообщения