Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 955

/ вопрос решён /

Доброго времени суток, уважаемые эксперты! Подскажите какой код надо прописать, чтобы, например при нажатии кнопки, выполнелась перезагрузка компьютера!
Заранее спасибо!

Ученый Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Ученый (статус: 8-ой класс)
Вопрос отправлен: 2 октября 2008, 11:52
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: Аксион

Здравствуйте, Ученый!
Попробуйте вот это:
ExitWindowsEx(EWX_LOGOFF or ewx_force,0);
для выключения.
И это:
ExitWindowsEx(EWX_FORCE or ewx_force,0);
для перезагрузки.

Ответ отправил: Аксион (статус: 4-ый класс)
Время отправки: 2 октября 2008, 12:47
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: Николай Рубан

Здравствуйте, Ученый!

Именно для перезагрузки компьютера в целом, необходимо использовать

ExitWindowsEx(EWX_REBOOT,0);

Соответственно для выключения:
ExitWindowsEx(EWX_SHUTDOWN,0);

Good Luck!

Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 2 октября 2008, 15:58
Оценка за ответ: 5

Комментарий к оценке: Вы даже не представляете на сколько огромное спасибо!!!!

Мини-форум вопроса

Всего сообщений: 19; последнее сообщение — 2 октября 2008, 17:18; участников в обсуждении: 4.
Вадим К

Вадим К (статус: Академик), 2 октября 2008, 12:06 [#1]:

Блазера надо просить персонально. Я когда то ему код рисовал:)
Галочка "подтверждения прочтения" - вселенское зло.
Пупкин В.В.

Пупкин В.В. (статус: 1-ый класс), 2 октября 2008, 13:02 [#2]:

вариантов много, но в варианте Блазера надо еще с привелегиями возится для NT. Еще один вариант - в uses ShellApi;
в коде ShellExecute(0,'open','shutdown','/r /f',nil,0);
вот и все если ничего не напутал.
Вадим К

Вадим К (статус: Академик), 2 октября 2008, 13:05 [#3]:

в этом варианте тоже далеко не факт, что получиться перезагрузка. Может быть это гость и ему закрыт доступ.
Галочка "подтверждения прочтения" - вселенское зло.
Пупкин В.В.

Пупкин В.В. (статус: 1-ый класс), 2 октября 2008, 13:11 [#4]:

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

Пупкин В.В. (статус: 1-ый класс), 2 октября 2008, 13:15 [#5]:

если гостю нельзя, то и ExitWindowsEx(EWX_LOGOFF or ewx_force,0); не пройдет
Вадим К

Вадим К (статус: Академик), 2 октября 2008, 13:39 [#6]:

Не обязательно в компьютерных клубах.
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 2 октября 2008, 15:50 [#7]:

Делаю как посоветовал Блазер! Всё идёт! Но происходит перезагрузка винды! а мне бы хотелось чтобы перезагружался полностью компьтер! Help me please....
Вадим К

Вадим К (статус: Академик), 2 октября 2008, 16:08 [#8]:

Под XP/Vista перегрузка винды без перегрузки компьютера маловозможна.
Может быть только сеанс перегружается.
Случайно не Виста?
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 2 октября 2008, 16:18 [#9]:

да нет XP! Только поверх ее Vista пак установлен! и вы правы перезагружается не комп, а сеанс !
Ученый

Ученый (статус: 8-ой класс), 2 октября 2008, 16:21 [#10]:

to Николай Рубан пушу как вы сказали! вообще ничего не происходит!
Вадим К

Вадим К (статус: Академик), 2 октября 2008, 16:22 [#11]:

Попробуйте указать такую константу EWX_REBOOT как параметр. Надеюсь сами догадаетесь, куда писать.
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 2 октября 2008, 16:24 [#12]:

неа недогадаюсь! объясните пожалуйста если это вас сильно не затруднит....
Вадим К

Вадим К (статус: Академик), 2 октября 2008, 16:34 [#13]:

ну так ExitWindowsEx(EWX_REBOOT,0);
хотя это уже в ответах писал Николай Рубан
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 2 октября 2008, 16:43 [#14]:

проблема какая! Пишу: procedure TForm3.Timer1Timer(Sender: TObject);
begin
a:=a+1;
if a=1 then label1.caption:='4';
if a=2 then label1.caption:='3';
if a=3 then label1.caption:='2';
if a=4 then label1.caption:='1';
if a=5 then label1.caption:='0';
if a=6 then ExitWindowsEx(EWX_REBOOT,0);

end;
Доходит время, а перезагрузки нет! Хотя в случае который предлагал Блазер всё работало, только перезагружался сеанс а не комп!
Аксион

Аксион (статус: 4-ый класс), 2 октября 2008, 16:47 [#15]:

Мм..бомба замедленного действия :)
Ученый

Ученый (статус: 8-ой класс), 2 октября 2008, 16:50 [#16]:

не совсем! не работает пока!
Пупкин В.В.

Пупкин В.В. (статус: 1-ый класс), 2 октября 2008, 16:56 [#17]:

не проще ли при иницилизации a:=4;
а в таймере label1.caption:=inttostr(a);
dec(a);
if a=0 then ExitWindowsEx(EWX_REBOOT,0);
Ученый

Ученый (статус: 8-ой класс), 2 октября 2008, 17:04 [#18]:

Результат тотже! Ничего не происходит! да к томуже теперь таймер не идёт!
Пупкин В.В.

Пупкин В.В. (статус: 1-ый класс), 2 октября 2008, 17:18 [#19]:

ясное дело что ошибка была не в этом просто был корявый код с кучей if А если вам надо было до 150 считать былоб 150 ифов ? =))))
и ваще множественный выбор - опкратор case.
А ошибка скорее всего в том что условие не выполняется.
или в другом чем из предоставленого кода не понятно.

31 января 2011, 19:31: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:29
Выполнено за 0.02 сек.