Показать полную графическую версию : [решено] Подтверждение при нажатии кнопок "Завершение работы" и "Перезагрузка"
помогите решить проблему: система Windows 7 Ultimate 64 bit ... для удобства в панели задач размещены два ярлыка - завершение работы Windows (C:\Windows\System32\shutdown.exe -s -t 00) и перезагрузка (C:\Windows\System32\shutdown.exe -r -t 00). Как сделать так, чтобы при нажатии на кнопку завершение работы и перезагрузка выполнялись не сразу, а требовали подтверждения? Это нужно, чтобы обезопасить систему от случайного нажатия этих кнопок
Установите для этих задач таймер в секунд 5 и сможет отменить при случайном нажатии.
таймер не подходит ... чаще всего кнопки завершения работы или перезагрузки нажимают жена или сын, которым глубоко плевать на таймер ... кроме того, доподлинно понять, что ты случайно нажал, к примеру, на кнопку ребута, можно лишь тогда, когда система уйдет в перезагруз
Blast, за пять секунд человек вряд ли успеет набрать shutdown /a в командной строке :)
чаще всего кнопки завершения работы или перезагрузки нажимают жена или сын, которым глубоко плевать на таймер »
Ну так пусть они пользуются обычными кнопками в своих учетных записях... [подкаст] 7 причин использовать отдельные учетные записи для каждого члена семьи (http://www.outsidethebox.ms/11767/)
Вообще не понимаю смысла делать кнопки, а потом искать способ обойти случайное нажатие. Бонус: используйте режимы сна и гибернации! (http://www.outsidethebox.ms/11296/#bonus)
за пять секунд человек вряд ли успеет »
ну так ярлычок третий "для удобства" :)
предлагаю не предлагать такие варианты решения проблемы как на фига тебе нужны эти кнопки, отдельные учетные записи и выбрось ты этот компьютер ... только по существу
только по существу »
Хм... мы уже знаем, что вас не интересуют ответы по существу (http://forum.oszone.net/thread-228823.html).
Но раз вы требуете, то ответ по существу такой. В окне, которое выводит команда shutdown при перезагрузке/выключении, не предусмотрено кнопок для отмены операции.
Ваша хотелка не имеет решения в столь жесткой постановке вопроса.
Blast, +1 и LOL :)
Morpheus
28-02-2012, 17:33
@echo off
set /p answer=Enter your choice (Y or N):
if %answer%==y C:\Windows\System32\shutdown.exe -s -t 00
Заверните в cmd свои удобные команды и требуйте подтверждения. Пример:@echo off
set /p answer=Выполнить перезагрузку? (Y/N):
if %answer%==y shutdown -r -t 00
clsтолько не говорите "зачем мне это нужно" :)
Morpheus
28-02-2012, 18:22
Blast, шо, апять? :)
Вспомнил, как можно сделать красиво...
http://s06.radikal.ru/i179/1202/c0/93ac1a3e63f8.jpg
nircmd.exe (http://soft.oszone.net/program/7092/NirCmd/) qbox "Перезагрузимся?" "Вопрос на засыпку :)" "shutdown.exe" -r -t 00
сори, но я не такой продвинутый пользователь, чтобы разобраться как этот код завернуть в cmd ... нужно создать в текстовом редакторе файл с этим кодом и расширением .bat ?
Morpheus
28-02-2012, 18:30
amilak, именно.
Morpheus, спс, попробую разобраться, хотя, конечно, хотелось бы без сторонних утилит и гаджетов всяких обойтись
Morpheus
28-02-2012, 18:33
amilak, в случае с cmd/bat сторонние утилиты не нужны.
Сторонняя утилита используется только в сообщении 10, для "деланья красиво".
Morpheus, тогда заодно нужно рассказать про автоперевод фокуса на запущенную программу (http://www.oszone.net/10594/run_as_admin#430).
Иначе количество кликов вкупе с нажатиями клавиш сравняется с тремя кликами, которые требуются для перезагрузки из меню Пуск :) Для выключения их уже столько же.
сделал файл reboot.bat с кодом:
@echo off
set /p answer=Выполнить перезагрузку? (Y/N):
if %answer%==y shutdown -r -t 00
cls
кошмар какой-то вышел, при нажатии появляется окно командной строки с текстом в виде абракадабры (по-видимому, это "Выполнить перезагрузку?" некорректно отображается) и предложением нажать Y/N ... слишком громоздко и долго ... есть масса утилит сторонних для завершения работы и ребута, но просто хотелось бы свои ярлыки с командами shutdown.exe -s -t 00 и shutdown.exe -r -t 00 настроить ... может, как-то нужно ключ запуска изменить ?! мне тут подсказывают, что нужно изменить таймаут, подтверждения не будет, но будет кнопка отмены, но я, честно говоря, не улавливаю смысл ...
Vadikan, ты меня опередил :)
Вот смотрю я на все это и недоумеваю...
amilak, я не хочу учить вас жизни или навязывать свое видение, но просто подумайте. Вы сделали ярлык для выключения компьютера в один клик - ок, мне сложно понять преимущества, но я принимаю, что вам это нужно. Теперь вы сделали тот же ярлык, но с подтверждением действия, что привело нас к двум кликам для выполнения операции (при условии использования варианта с nicmd). Собственно один клик - это нажатие кнопки Пуск и второй клик это нажатие кнопки Завершение работы, итого - два клика.
Любите шорох орехов? :)
с текстом в виде абракадабры »
Кодировку поменяйте: [решено] Кириллица в cmd и bat файлах (http://forum.oszone.net/thread-47627.html)слишком громоздко и долго »
Тогда юзайте вариант из сообщения #10 (http://forum.oszone.net/post-1868562-10.html)
мне тут подсказывают, что нужно изменить таймаут, подтверждения не будет, но будет кнопка отмены »
Попробуйте и увидите, что будет кнопка "Закрыть" :)
Последний вариант... честно :)
Действия те же, только теперь код в текстовый файл и сохраните с расширением vbsMessage = "Сейчас как перезагрузится..." & vbCR & vbCR
Message = Message & "Продолжить?"
X = MsgBox(Message, vbYesNo, "А оно надо?")
If X = 6 Then
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("shutdown -r -t 00")
Else
MsgBox "Фух... пронесло кажется." & vbcr & vbcr, 4096, "Юзер испугался"
End If
Красным выделены тексты сообщений и заголовков в окошках подтверждения и информации, зеленым команда для выполнения при согласии - меняйте как понравится.
Только помните, что WHS сценарии не умеют запрашивать повышение привилегий при включенном UAC
После шестого поста я даже не сомневался, что в итоге все сведется к банальному VBS. Но на домашнем ПК его отличие от nircmd, лежащей в system32, трудно объяснить с точки зрения здравого смысла. В общем, как и...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.