Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 8
Всего онлайн: 8
Зарегистрировано юзеров: 7941
Комментариев на сайте: 698
Новый юзер: Robertimifs



Последние комментарии
c
Dennisvoifs прокомментировал "Урок 3 - Конструкция IF...THEN...ELSE":
Пункт коммерческого учета цена, Ктп комплектные трансформаторные подстанции москва, Производство ктп москва и не только Вы найдете на нашем специализированном сайте: - Вам к нам!https://sviloguzov.ru/
Arthurneime прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
[img]https://masterfutures.ru/wp-content/uploads/2020/03/14-2.png[/img] Online trading is becoming increasingly popular, as more people learn of the earning potential of platforms such as Broker, a broker which caters to a significant audience of digital traders (12 million and counting). Known for their excellent user interface, as well as fast deposit and withdrawal times, Broker provides multiple features to help traders earn on the markets. This overview will outline just some of the key aspects traders can expect to enjoy whilst working with Broker broker. Online trading is becoming increasingly popular, as more people learn of the earning potential of platforms such as Broker, a broker which caters to a significant audience of digital traders (12 million and counting). Known for their excellent user interface, as well as fast deposit and withdrawal times, Broker provides multiple features to help traders earn on the markets. This overview will outline just some of the key aspects traders can expect to enjoy whilst working with Broker broker. Broker Broker is operated by a dedicated team, whose main priority has always been to provide the best possible user experience, and ultimately satisfaction. Whether experienced in trading or a newcomer, the platform is easy to use and very responsive. The education section deserves special mention, particularly for assisting traders to learn and implement new strategies – which can be tested on the platforms free demo Source: [url=https://bit.ly/35fv3B6/]Broker[/url] https://bit.ly/35fv3B6/ Tags: Broker

Урок 33 - Автовыключатель компьютера

   В этом уроке мы создадим программу под названием "рубильник", она будет выключать наш компьютер по расписанию.

   Итак, нам потребуется: 4 Label, 2 Button, DateTimePicker (Win32) и Timer. Располагаем эти компоненты так как на рисунке:

Форма


   Определимся со свойствами, свойство Kind у DateTimePicker установим в dtkTime, и свойство Enabled у Timer выставляем в False.

   Для выключения компьютера служит функция ExitWindowsEx();, но если её написать вот так просто, то ничего не произойдет, она так работала только в Windows98, в более современных системах она работает только когда есть особые привилегия у использующей её программы. Как сделать эти привилегия мы сейчас и узнаем. Для начала создадим процедуру выключения, в разделе Private Form1 объявим процедуру:
...
  private
    { Private declarations }
    Procedure PowerOFF;
...
   Нажмем комбинацию клавиш Shift + Ctrl + C и Delphi сам создаст шаблон для процедуры, его нужно наполнить кодом:
procedure TForm1.PowerOFF;
var  
  TTokenHd: THandle;  
  TTokenPvg: TTokenPrivileges;  
  cbtpPrevious: DWORD;
  rTTokenPvg: TTokenPrivileges;
  pcbtpPreviousRequired: DWORD;  
  tpResult: Boolean;  
const  
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; 
begin
//=========== Получаем привилегии ==============//
begin  
  if Win32Platform = VER_PLATFORM_WIN32_NT then  
  begin  
    tpResult := OpenProcessToken(GetCurrentProcess(),  
      TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,  
      TTokenHd);  
    if tpResult then  
    begin  
      tpResult := LookupPrivilegeValue(nil,  
                                       SE_SHUTDOWN_NAME,  
                                       TTokenPvg.Privileges[0].Luid);  
      TTokenPvg.PrivilegeCount := 1;  
      TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;  
      cbtpPrevious := SizeOf(rTTokenPvg);  
      pcbtpPreviousRequired := 0;  
      if tpResult then  
        Windows.AdjustTokenPrivileges(TTokenHd,  
                                      False,  
                                      TTokenPvg,  
                                      cbtpPrevious, 
                                      rTTokenPvg, 
                                      pcbtpPreviousRequired); 
    end; 
  end;
//=============================================//
  ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0); //Выключаем компьютер;
end;
   Все процедура выключения готова, получилась она довольно громадной, зато везде работает. Теперь займемся таймером, создаем его обработчик события и пишем код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  a,b: String;
begin
  Label3.Caption:= TimeToStr(GetTime);  //Получаем текущее время
  Label4.Caption:= TimeToStr(DateTimePicker1.Time - GetTime); //Вычисляем сколько времени осталось до выключения

  a:=  TimeToStr(GetTime); //Присваиваем текущее время
  b:= TimeToStr(DateTimePicker1.Time); //Присваиваем время выключения

  if a = b then  //Если текущее время равно времени выключения то 
	PowerOFF;	 //выполняем процедуру выключения   
end;
   Помните в начале урока мы выключили таймер, сделано это для того, чтобы можно было сначала настроить время а потом запустить таймер. Давайте сделаем управление таймером. Создадим обработчик события OnClick на кнопке "Старт":
procedure TForm1.Button2Click(Sender: TObject);
begin
 Timer1.Enabled:=True; //Включаем таймер
end;  
   Ну и также выключим ,если например ошиблись во времени или передумали, в обработчике на кнопке "Стоп":
procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled:=False;
end;


Через 20 сек компьютер выключится


   Вот у нас получилась такая программа, осталось изменить свойство Caption у Form1 на "Рубильник" и готово! Будьте осторожней с ней :)

Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 3 Мая 2013
Просмотров: 16154

Урок 32 - Объединение всего изученного про базы данных Урок 34 - Шифрование информации

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил(а): Mattew_Pharrel [Новичок] Дата: 2014-08-11
Что такое "token", "tHandle", с чем его едят? Где можна найти информацию по таким вещам? Уж больно занятные вещи(ИМХО).




аватар Добавил(а): Mattew_Pharrel [Новичок] Дата: 2014-08-11
И почему два "begin"`a после обьявления "const"?




аватар Добавил(а): Dragonfly [Новичок] Дата: 2015-01-12
Спасибо за урок) все замечательно, вот только о том как привилегии предоставляются ничего не понял просто скопировал все Кому интересно вот мое творение по этому уроку - (https://drive.google.com/file/d/0BzKVbXO3LSZ9S1ZNMEtOT0dCSzg/view?usp=sharing) Сделал что бы отключить можно было только по паролю, который задается при старте, по другому вырубить можно только через диспетчер(не доработки(не знаю как исправить буду рад совету))