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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2008, 23:01   #1
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию Выключение/Перезагрузка в Vista

Подскажите как выключить/перезагрузить компьютер в Vista ?
То что действует для XP, для Vista один эффект - Выход из системы
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 12.01.2008, 18:44   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Цитата:
Сообщение от Veiron Посмотреть сообщение
Подскажите как выключить/перезагрузить компьютер в Vista ?
То что действует для XP, для Vista один эффект - Выход из системы
Всё нормально работает и на висте и на ХР.
Выключение компа:
Код:
var
  th, size: Cardinal;
  luid: Int64;
  tp: TOKEN_PRIVILEGES;
  ptp: PTokenPrivileges;
begin
if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, th) then
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', luid) then
begin
tp.PrivilegeCount := 1;
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Luid := luid;
ptp := nil;
AdjustTokenPrivileges(th, false, tp, 0, ptp^, size);
ExitWindowsEx(EWX_POWEROFF or ewx_force,0);
end;
А вот перезагрузка:
Код:
var
  th, size: Cardinal;
  luid: Int64;
  tp: TOKEN_PRIVILEGES;
  ptp: PTokenPrivileges;
begin
if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, th) then
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', luid) then
begin
tp.PrivilegeCount := 1;
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Luid := luid;
ptp := nil;
AdjustTokenPrivileges(th, false, tp, 0, ptp^, size);
ExitWindowsEx(EWX_REBOOT or ewx_force,0);
end;
Только эти функции не будут спрашивать другие программы, чтобы они например сохранили данные.
Агрессивный метод так сказать.
FaTaL вне форума Ответить с цитированием
Старый 12.01.2008, 20:12   #3
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
Всё нормально работает и на висте и на ХР.
Выключение компа:
Код:
var
  th, size: Cardinal;
  luid: Int64;
  tp: TOKEN_PRIVILEGES;
  ptp: PTokenPrivileges;
begin
if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, th) then
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', luid) then
begin
tp.PrivilegeCount := 1;
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Luid := luid;
ptp := nil;
AdjustTokenPrivileges(th, false, tp, 0, ptp^, size);
ExitWindowsEx(EWX_POWEROFF or ewx_force,0);
end;
А вот перезагрузка:
Код:
var
  th, size: Cardinal;
  luid: Int64;
  tp: TOKEN_PRIVILEGES;
  ptp: PTokenPrivileges;
begin
if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, th) then
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', luid) then
begin
tp.PrivilegeCount := 1;
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Luid := luid;
ptp := nil;
AdjustTokenPrivileges(th, false, tp, 0, ptp^, size);
ExitWindowsEx(EWX_REBOOT or ewx_force,0);
end;
Только эти функции не будут спрашивать другие программы, чтобы они например сохранили данные.
Агрессивный метод так сказать.

Какой компилятор под Висту нужен? напиши мне в лчку...буду признателе очень
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Старый 12.01.2008, 20:16   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Цитата:
Сообщение от Pitbull Посмотреть сообщение
Какой компилятор под Висту нужен? напиши мне в лчку...буду признателе очень
У меня стоит Delphi 7 SE на Windows Vista Ultimate и всё нормально компилируется. Отдельным компилятором не пользуюсь.
FaTaL вне форума Ответить с цитированием
Старый 13.01.2008, 06:23   #5
Лёка
Пользователь
 
Регистрация: 09.01.2008
Сообщений: 42
По умолчанию

Другие программы будут убиваться, где-то видел код на то что бы не убивались, а кнопочки закрыть у них нажимались(они сразу выполняли все команды на сохранение)

и еще Delphi 7 SE копиляторы её идут не тока на висту? ну XP то ж пойдет?

Последний раз редактировалось Лёка; 13.01.2008 в 06:34.
Лёка вне форума Ответить с цитированием
Старый 13.01.2008, 09:35   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Цитата:
Сообщение от Лёка Посмотреть сообщение
Другие программы будут убиваться, где-то видел код на то что бы не убивались, а кнопочки закрыть у них нажимались(они сразу выполняли все команды на сохранение)

и еще Delphi 7 SE копиляторы её идут не тока на висту? ну XP то ж пойдет?
Компилятор и на ХР пойдёт, а вот на счет чтобы спрашивала программы, там только надо изменить флаги в строке ExitWindowsEx(EWX_POWEROFF or ewx_force,0);

Вот варианты флагов. Выберай:

Код:
ExitWindowsEx(EWX_SHUTDOWN or ewx_force,0);
останавливает работу системы в безопасный момент времени. Все буферы очищаются с сохранением данных на диске, все процессы останавливаются


Код:
ExitWindowsEx(EWX_REBOOT or ewx_force,0);
перезагрузка системы


Код:
ExitWindowsEx(EWX_FORCE or ewx_force,0);
завершает работу всех запущенных в системе приложений, не посылая им сообщения WM_QUERYENDSESSION и WM_ENDSESSIO. Это может вызвать потерю не сохраненных данных


Код:
ExitWindowsEx(EWX_POWEROFF or ewx_force,0);
завершает работу компьютера с выключением питания, если система поддерживает автоуправление питанием


Код:
ExitWindowsEx(EWX_FORCEIFHUNG or ewx_force,0);
завершает работу всех запущенных в системе приложений если система висит

Ещё вариант перезагрузки:

Код:
mov al,0F0h out 64h,al
FaTaL вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выключение компьютера aesoem Общие вопросы Delphi 2 03.07.2008 16:50
Выключение и перезагрузка Патрон 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
Перезагрузка LAFam Win Api 13 09.12.2007 09:15
выключение, перезагрузка компьютера ATL Win Api 4 16.05.2007 01:57