Суббота, 2024-05-18, 5:47 PM
Начало Каталог статей Регистрация Вход
Вы вошли как "Гость" · RSS
Меню сайта
Категории статей
Компьютеры [0]
Разное [0]
Программированние [0]
Мобильные [0]
Учебники [0]
Мои статьи [4]
Форма входа
Поиск по статьям
Друзья сайта
Наш опрос
Ваш любимый поисковик

Результаты · Архив опросов

Всего ответов: 187
Статистика
Каталог статей
» Каталог статей » Мои статьи
выключение винды

выключение винды
В этой статье описывается, как сделать на Delphi таймер выключения винды!

Сперва на фрму накидаем нужные нам компоненты!
(все эти компоненты находятся на закладке Standard)

1) Label (для вывода реального времени)
2) 2 ComboBox (для вводимого времени часы и минуты)
3) CheckBox (включение таймера)
4) Timer1 (находится на закладке System)

Затем в первом ComboBox1 там где у нас будут часы в свойства Items вводим значения от 0..23, а в другом ComboBox2 в свойстве Items вводим значения от 00..59 (вводить обязательно 00,01,02… ). CheckBox нам нужно для включения таймера. Таймер нам нужен для постоянного вывода времени в Label и сравнение времени.

Ну и преступаем к самому коду программы.

Сперва сделаем, чтобы наша программка просто показывала реальное время!

Проверим чтобы у Timer1 в свойстве Enabled (что означает включено или выключено) ставим в режим True (включено) после в свойстве interval ставим 1000 (1 секунда). Вообще-то эти свойства и так стоят как нам и надо по умолчанию.
Далее делаем двойной щелчок мышкой по Timer1 и пишем код

// выводим в Label1 реальное время
Label1.Caption := TimeToStr(Time);

Если запустить программу то будет видно что время не сразу появляется! Два раза кликаем по форме появится процедура которая выполняется при создании формы и пишем там тот же код чтобы время появлялось сразу же при запуске программы.

Далее обратно возвращаемся к таймеру и дописываем там вот такой код

if CheckBox1.State = cbChecked then
Begin
if Label1.Caption = ComboBox1.Text + ':' + ComboBox2.Text + ':' + '00' then POWEROFF;
End;

Если включен CheckBox1.State то сравниваем реальное время с тем что выставлено в ComboBox если они одинаковы то вызываем процедуру POWEROFF (выключение винды)

А процедура POWEROFF будет такая.

procedure TForm1.POWEROFF;
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;

Также нужно добавить в Type
procedure POWEROFF;

ну вот и все!!!

Автор : GReeN (Сайт : www.delphi.clan.su)
Свои мнения пишите на green1-86@mail.ru

Категория: Мои статьи | Добавил: green (2006-06-15) | Автор: гринвич
Просмотров: 1793 | Комментарии: 1 | Рейтинг: 3.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Хостинг от uCoz