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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2008, 17:22   #1
Bill Gates
Пользователь
 
Аватар для Bill Gates
 
Регистрация: 23.11.2007
Сообщений: 26
Стрелка Как програмно завершить работу компьютера?

Как програмно завершить работу компьютера?
Bill Gates вне форума Ответить с цитированием
Старый 04.01.2008, 17:33   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Код:
procedure TForm1.Button1Click(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_SHUTDOWN, 0);
  end;
end;
Всегда рад помочь!

Последний раз редактировалось rpy3uH; 18.08.2008 в 09:26.
Terran вне форума Ответить с цитированием
Старый 07.01.2008, 00:12   #3
Rahim1993
Пользователь
 
Аватар для Rahim1993
 
Регистрация: 27.12.2007
Сообщений: 67
По умолчанию

Посмотри, может вот это поможет:

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(FindWindow('Progman', 'Program Manager'),
WM_CLOSE, 0, 0);
end;
S.R.H.(Rahim)
Rahim1993 вне форума Ответить с цитированием
Старый 07.01.2008, 01:05   #4
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Мда, есть более простое решение:
function ExitWindows (dwReturnCode: Longint;Reserved: Word): Bool;
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 07.01.2008, 11:35   #5
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

Может я что-то не понимаю? Зачем вот это все было писать?
Цитата:
procedure TForm1.Button1Click(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_SHUTDOWN, 0);
end;
end;
ExitWindowsEX(EWX_SHUTDOWN, 0);
Мне всегда только строки хватало!
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Завершить приложения EdNovice Общие вопросы Delphi 4 16.05.2008 08:06
Завершить процесс doniyor Win Api 2 15.05.2008 21:52
Как завершить процесс, зная его имя Никки Win Api 6 14.01.2008 14:04
как завершить роботу компьютера с помощью кода Amor_06 Безопасность, Шифрование 10 06.01.2008 23:30
Как корректно завершить цикл? Iren Microsoft Office Excel 4 02.11.2007 09:58