Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 26.07.2009, 00:32   #1
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию команда для выключения компьютера в дельфи

доброе время суток...хотел написать простую прогу которая при открытии выключает комп..подскажите как сделать пожалуйста....заранее спасибо
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума
Старый 26.07.2009, 00:40   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Код:
procedure TForm1.FormCreate(Sender: TObject);
var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then
begin
LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
// ExitWindowsEx(EWX_Reboot,0); // Перезагрузка
ExitWindowsEx(EWX_ShutDown,0);// Выключение
// SetSystemPowerState(true, true);  } //Перевести комп в ждущий режим
end;
end;
Всегда рад помочь!
Terran вне форума
Старый 26.07.2009, 01:45   #3
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

спасибо все работает)))но я хотел понять сам код но не понимаю(((я думал будет проще((например почему нельзя просто написать shutdown??ты можешь объяснить мне код???
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума
Старый 26.07.2009, 01:49   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

В старых виндах, комп можно было просто выключить командой
Код:
ExitWindowsEx(EWX_ShutDown,0);
А в новых так нельзя. Винда не даст включить комп. Для того, что бы можно было выключить комп нужно получить привилегию. И вся остальная писанина в коде - это получение привилегий для программы.
Всегда рад помочь!
Terran вне форума
Старый 26.07.2009, 02:08   #5
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

примерно понимаю....но примерно это не полностью(((пришлось мне сделать так чтобы выключался при нажатии кнопки)))а то когда я скомпилировал ее комп сразу выключался и не давал мне сохранять)))эх если бы я сам умел все делать(((
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума
Старый 26.07.2009, 04:05   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Не волнуйтесь! Если есть желание, то научитесь, а для того, чтобы при компиляции проект не запускался компилируйте его Ctrl+F9.
Всегда рад помочь!
Terran вне форума
Старый 26.07.2009, 11:33   #7
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

надеюсь... а (hToken;tkp;ReturnLength)-это имена переменных??? а вот это (THandle;TTokenPrivileges;Cardinal; )-это что такое объясните если не трудно..я просто хочу вникнуть в этот код и понять каждую команду
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума
Старый 26.07.2009, 13:07   #8
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
(hToken;tkp;ReturnLength)-это имена переменных???
Да, это переменные.
Цитата:
а вот это (THandle;TTokenPrivileges;Cardinal; )-это что такое объясните если не трудно
Это их типы.
Всегда рад помочь!
Terran вне форума
Старый 26.07.2009, 13:14   #9
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

я понял что это типы...хочу знать что конкретно означают эти типы????)))) ну например integer или real я понимаю что это за типы...вот точно так же хотел понять что это за типы
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума
Старый 26.07.2009, 13:44   #10
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Если не ошибаюсь, то тип THandle - опpеделяет общий тип описателя и равен типу LongWord. Диапазон от 0 до 4 294 967 295. Формат 32 бита, беззнаковый.
Тип TTokenPrivileges - это пакет записей.
Тип Cardinal - это основной тип целого числа без знака. Диапазон от 0 до 4 294 967 295. Формат 32 бита.
Всегда рад помочь!
Terran вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Окно выключения компьютера Михаил Юрьевич Общие вопросы Delphi 9 27.04.2009 18:27
Нужна Команда Добровольцев Для Создания Игры Portal Runaway Night_Hunter Фриланс 4 11.02.2009 14:32
Команда для разработки игры! ВСЕ СЮДА RUmon Фриланс 1 09.02.2009 11:12
DOS команда для удаления всех файлов, имена которых содержат цифры Samopal Операционные системы общие вопросы 1 23.12.2008 21:12
Перехват выключения компьютера Спартак Общие вопросы Delphi 3 06.03.2008 15:45