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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2009, 16:47   #1
Rebel123
C++ новичок
Форумчанин
 
Аватар для Rebel123
 
Регистрация: 13.06.2009
Сообщений: 160
По умолчанию Выключение, Перезагрузка компа на Delphi

Доброго времени суток программисты. Вот пишу программу, и меня интересует следующее:
1) Как перезагрузить комп? (я так понял надо Reboot вызывать?)
2) Как выключить комп?
3) В Ждущии режим?
4) в Спящии режим?
Или может посоветуйте какие нибудь книжки по этой тематике!
Rebel123 вне форума Ответить с цитированием
Старый 17.08.2009, 16:59   #2
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию

Код:
function MyExitWindows(RebootParam: Longword): Boolean;  
var  
  TTokenHd: THandle;  
  TTokenPvg: TTokenPrivileges;  
  cbtpPrevious: DWORD;  
  rTTokenPvg: TTokenPrivileges;  
  pcbtpPreviousRequired: DWORD;  
  tpResult: Boolean;  
const  
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';  
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; 
  Result := ExitWindowsEx(RebootParam, 0);
end; 

//Выключение
procedure TForm1.Button18Click(Sender: TObject);
begin
 MyExitWindows(EWX_POWEROFF or EWX_FORCE);
end;

//Перезагрузка
procedure TForm1.Button19Click(Sender: TObject);
begin
  MyExitWindows(EWX_REBOOT or EWX_FORCE); 
end;
Я бы изменил мир, но Бог не дает исходники...
Polotenchik вне форума Ответить с цитированием
Старый 17.08.2009, 16:59   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Поиском по форуму на слово ExitWindowsEx
Это уже обсуждалось в примерах.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.08.2009, 17:00   #4
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию

Или вот:

Код:
user ShellAPI;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(handle, nil,'shutdown',' -s -t 00','', SW_SHOWNORMAL);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShellExecute(handle, nil,'shutdown',' -a','', SW_SHOWNORMAL);
end;
Или тут:
http://www.delphirus.com/modules.php...wpage&pid=1083

А вообще поиск... Тем миллион.
Я бы изменил мир, но Бог не дает исходники...
Polotenchik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перезагрузка/выключение/блокирование машины на C# oleg kutkov Общие вопросы .NET 19 26.08.2011 16:27
Выключение и перезагрузка Патрон Win Api 8 26.03.2008 16:24
Перезагрузка компа Pusher Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 19.02.2008 20:54
Выключение/Перезагрузка в Vista Veiron Общие вопросы Delphi 5 13.01.2008 09:35
выключение, перезагрузка компьютера ATL Win Api 4 16.05.2007 01:57