Урок 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;
Вот у нас получилась такая программа, осталось изменить свойство Caption у Form1 на "Рубильник" и готово! Будьте осторожней с ней :)
Удачи!
Встретимся в следующем уроке!
Добавил(а): Mattew_Pharrel | Дата: 2014-08-11 | |
Что такое "token", "tHandle", с чем его едят? Где можна найти информацию по таким вещам? Уж больно занятные вещи(ИМХО).
![]() |
Добавил(а): Mattew_Pharrel | Дата: 2014-08-11 | |
И почему два "begin"`a после обьявления "const"?
![]() |
Добавил(а): Dragonfly | Дата: 2015-01-12 | |
Спасибо за урок)
все замечательно, вот только о том как привилегии предоставляются ничего не понял
![]() ![]() ![]() ![]() |
Особенно мне понравилась отличительная черта сотрудников фирмы - оперативность в работе и готовность быстро
реагировать на форс-мажорные обстоятельства, возникшие у заказчиков и подстраиваться к ним. Убедился в этом лично, когда понадобилась услуга [url=http://bankrot.space/]Дело о банкротстве юридического лица рассматривает В Москве[/url].
Сроки поджимали. В итоге сотрудники проделали всё грамотно, быстро и аккуратно.
Высокая организованность и профессионализм сотрудников данной юридической фирмы - неукоснительное свидетельство их дальнейшего успеха и востребованности!
Я пользуюсь CryptoTab Браузером — и вам советую! С ним вы сможете получать BTC, просто посещая любимые сайты или просматривая видео на YouTube. CryptoTab быстр, надежен и обладает удобным интерфейсом. http://bit.ly/2TPy2dj
https://cryptotabbrowser.com/landing/49/5703690
https://clck.ru/QB2Wk
=Crypto=
http://merchprint.ru/zhenskiye-hudi/hudi-risunki-i-kartinki-1641055 - Худи
Старая цена - 1099
Новая цена - 799
Биржа Coinbase сломалась по окончании подъема биткоина выше $20 000. Сан-Франциско, США, 16 декабря 2020, 20:40 — REGNUM Криптовалютная биржа Coinbase оказалась перегружена и не смогла проводить часть операций после подъема биткоина выше $20 000, 16 декабря информирует агентство Reuters. Зарегистрированная в Калифорнии Coinbase сказала, что «исправляет ситуацию» , возникшую с продажей криптовалют на розничной платформе. Как сообщало ИА REGNUM , ранее криптовалюта Bitcoin поднялась в цене выше $20 000 в первый раз за время существования. Максимум торгов биткоина пока образовывает около $20 800.
[url=http://bit.ly/3mWmalc]биткоин кошелек на русском[/url]
Всем привет.
В свое время я взял большой кредит. Всё было хорошо, пока не пришли сложные времена.
У меня образовалась проблема с возвратом кредитных средств.
Пришлось много поискать защиту среди различных юридичесикх контор.
Удача повернулась ко мне. Я нашёл её...Ту самую, которая решила все мои проблемы.
Мне понадобилась услуга [url=http://bit.ly/2JBFtzq]договор купли продажи по доверенности квартира[/url]
.
Сначала я обрисовал всё на сайте, где меня бесплатно проконсультировали.
После заключения договора с данной фирмой, специалисты этой фирмы консультировали меня по всем вопросам
и вели полное сопровождение на протяжении всего процесса.
Всё очень организованно и профессионально сделали сотрудники этой юридической конторы.
Мои проблемы были решены за короткий срок.
Молодцы! Просто нет слов, настолько все четко сделано, честно говоря неожиданно. Такое качество за такие сроки!
Большое вам спасибо.
Рекомендую!
[url=http://bit.ly/2JBFtzq]как писать научную статью[/url]
Консультации по телефонам:
Москва, Московская область 8 (499) 350-55-06 доб. 238
Санкт-Петербург, Ленинградская область 8 (812) 309-06-71 доб. 793
Федеральный номер 8 (800) 555-67-55 доб. 779
Краснодарский край 8 (861) 203-64-41 доб. 767
Свердловская область 8 (343) 318-28-46 доб. 776
Воронежская область 8 (473) 204-54-67 доб. 765
Новосибирская область 8 (383) 280-46-81 доб. 764
Нижегородская область 8 (831) 429-17-72 доб. 771
Волгоградская область 8 (844) 278-04-56 доб. 769
Республика Башкортостан 8 (347) 214-53-29 доб. 764
Красноярский край 8 (391) 204-65-59 доб. 767
Ростовская область 8 (863) 303-61-49 доб. 771
Ульяновская область 8 (842) 224-21-78 доб. 764
Челябинская область 8 (351) 202-13-44 доб. 770
Ставропольский край 8 (865) 220-71-53 доб. 751
[URL=http://bastionconsult.ru/?wmid=14299][IMG]http://static.leadia.org/banners/240x400.png[/IMG][/URL]
Bitcoin-кошелек «Blockchain» Bitcoin-кошелек «Blockchain» имеет несколько примечательных защитных функций от угроз, характерных для онлайн-кошельков. Например, Blockchain поддерживает осуществляемую клиентом AES-шифровку, которая защищает кошелек от хакерства со стороны сервера. Он также поддерживает оффлайн-транзакции, функцию двойной шифровки и двухфакторное подтверждение подлинности. Blockchain не только машинально помещает кошелек на Гугл Drive или Dropbox, но также позволяет загружать кошелек вручную. Помимо того, Blockchain совершает ежечасную удаленную синхронизацию с сервером. Имеется мобильная версия кошелька Blockchain для Android, iPhone и iPad.
[url=http://bit.ly/3mWmalc]транзакции биткоин кошелька[/url]
[url=https://hangulatjelek.eoldal.hu/cikkek/msn-hangulatjelek-3.html#block-comments]Биткоин кошелек какой выбрать[/url]
[url=https://forum.zakon.kz/topic/68157-%D1%81%D1%80%D0%BE%D0%BA%D0%B8-%D1%83%D0%BF%D0%BB%D0%B0%D1%82%D1%8B-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D1%85-%D1%88%D1%82%D1%80%D0%B0%D1%84%D0%BE%D0%B2/?page=8#comment-1522888]Адрес биткоин кошелька[/url]
[url=https://devayser.com/drl-2-plus-controller.html#4050]Coinbase кошелек на русском[/url]
[url=https://posobie.net/subsidii/programma-molodaja-semja-v-hmao.html#comment-43827]Coinbase перевод[/url]
[url=https://forum.zakon.kz/topic/8010-%D0%B2%D0%B8%D0%B4-%D0%BD%D0%B0-%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE-%D0%B8-%D0%B3%D1%80-%D0%BA%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D1%82%D0%B0%D0%BD%D0%B0/?page=3#comment-1522844]Биткоин wallet кошелек[/url]
97305aa