Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 20
1

выключение компьютера

25.11.2013, 16:30. Просмотров 649. Ответов 3
Метки нет (Все метки)

Подскажите пожалуйста как сделать выключение компьютера после завершении работы программы?
Тоесть , что бы если пользователя нажал на чек юокс , то компьютер будет выключаться (после завершении работы программа)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2013, 16:30
Ответы с готовыми решениями:

Выключение компьютера
Здравствуйте, мне нужно чтоб программа выключала компьютер в час ночи, и чтобы его или нельзя было...

Время выключение компьютера
Нашел на мсдн GetSystemMetrics(SM_SHUTTINGDOWN). Решил попробовать. Но что-то пошло не так... ...

Перезагрузка\выключение компьютера
Уважаемые форумчане. Срочно нужна прога которая перезагружает или выключает комп по наступлении...

ServerCocket, удалённое выключение компьютера.
Извение что не по теме ,но очень нужна помощь! Как сделать чтобы компонент ServerCocket выключал...

3
2474 / 1850 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
25.11.2013, 16:52 2
Delphi
1
2
3
4
5
6
  // завершает работу всех запущенных в системе процессов, сохраняя данные приложения, вызвавшего эту функцию 
  ExitWindowsEx(EWX_SHUTDOWN or ewx_force,0);
  // завершает работу всех запущенных в системе приложений, не посылая им сообщения WM_QUERYENDSESSION и WM_ENDSESSIO. Это может вызвать потерю не сохраненных данных 
  ExitWindowsEx(EWX_POWEROFF or ewx_force,0);
// завершает работу компьютера с выключением питания, если система поддерживает автоуправление питанием 
  ExitWindowsEx(EWX_FORCEIFHUNG or ewx_force,0);
0
Эксперт Pascal/Delphi
4628 / 2616 / 830
Регистрация: 04.10.2012
Сообщений: 9,556
25.11.2013, 17:43 3
Процедура выключения машины
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
procedure ShutdownSystem(Flags: UINT);
var
  handle_: THandle;
  n: DWORD;
  luid: TLargeInteger;
  priv: TOKEN_PRIVILEGES;
  ver: TOSVERSIONINFO;
begin
  ver.dwOSVersionInfoSize := Sizeof(ver);
  GetVersionEx(ver);
  if ver.dwPlatformId=VER_PLATFORM_WIN32_NT then
  begin
    if OpenProcessToken(GetCurrentProcess,
       TOKEN_ADJUST_PRIVILEGES, handle_) then
      if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', luid) then
      begin
        priv.PrivilegeCount := 1;
        priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
        priv.Privileges[0].Luid := luid;
        AdjustTokenPrivileges(handle_, false, priv, 0, nil, n);
      end
  end;
  if not ExitWindowsEx(Flags,1) then writeln('Операция прервана');
 
end;
Далее
Delphi
1
2
3
4
// ваши операции, выполняемые в программе
...............
//после
if CheckBox1.Checked then ShutdownSystem(EWX_POWEROFF); //выключаем
2
223 / 222 / 112
Регистрация: 20.10.2013
Сообщений: 808
25.11.2013, 18:35 4
droider,
Еще как вариант длинней, по скольку тут еще и перезагрузка:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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;
Вызывается так:
Delphi
1
2
3
4
if RadioButton1.Checked then
        MyExitWindows(EWX_REBOOT or EWX_FORCE)
      else if RadioButton2.Checked then
        MyExitWindows(EWX_POWEROFF or EWX_FORCE);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2013, 18:35

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выключение компьютера кнопкой на форме
Как выключить компьютер с помощью кнопки на форме.

Выключение пк
подскажите как выключить пк при нажатии на кнопку ? Но чтоб при выключении все окна открытые в...

Выключение ПК программно
Тут вот такая штука... мне нужно собрать воедино куски одной простенькой задачки... Задумка вот...

Выключение перезагрузка
Как сделать выключение и перезагрузку с завершением всех программ Чтобы не выскакиволо это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.