Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Подскажите как выключить/перезагрузить компьютер в Vista ?
То что действует для XP, для Vista один эффект - Выход из системы
Veiron вне форума   Ответить с цитированием
Старый 12.01.2008, 19:44   #2
FaTaL
Профессионал
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,728
Репутация: 458
По умолчанию

Цитата:
Сообщение от 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, 21:12   #3
Pitbull
детский тренер
Участник клуба
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Адрес: г.Попасная, Украина
Сообщений: 532
Репутация: 220

icq: 266282071
По умолчанию

Цитата:
Сообщение от 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, 21:16   #4
FaTaL
Профессионал
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,728
Репутация: 458
По умолчанию

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

icq: 380600600
skype: neevirus
По умолчанию

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

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

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

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

и еще 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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выключение компьютера aesoem Общие вопросы Delphi 2 03.07.2008 16:50
Выключение и перезагрузка Патрон Win Api 8 26.03.2008 17:24
Перезагрузка компа Pusher Assembler 14 19.02.2008 21:54
Перезагрузка LAFam Win Api 13 09.12.2007 10:15
выключение, перезагрузка компьютера ATL Win Api 4 16.05.2007 01:57


08:12.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru