создать простой таймер выключения из контекстного меню
Цитата: --- НЛО --- от 07.08.2022, 23:49Бонжур!
Есть команды shutdown:Компьютер будет выключен через:
shutdown -s -t 10
Выключение будет приостановлено
shutdown -a
Все приложения будут принудительно закрыты
rem shutdown -fНельзя ли их как то изящно вмонтировать в контекстное меню, дабы выключать компьютер через определённое время, не прибегая к установкам дополнительного софта, обходясь штатными средствами Windows? (Без заморочек открытия какой-то программы и ковыряясь в ней минуты 3, чтобы что-то там настроить и в итоге компьютер не выключается, потому что программа не смогла завершить работающие процессы)
Бонжур!
Есть команды shutdown:
Компьютер будет выключен через:
Скопированоshutdown -s -t 10
Выключение будет приостановлено
Скопированоshutdown -a
Все приложения будут принудительно закрыты
Скопированоrem shutdown -f
Нельзя ли их как то изящно вмонтировать в контекстное меню, дабы выключать компьютер через определённое время, не прибегая к установкам дополнительного софта, обходясь штатными средствами Windows? (Без заморочек открытия какой-то программы и ковыряясь в ней минуты 3, чтобы что-то там настроить и в итоге компьютер не выключается, потому что программа не смогла завершить работающие процессы)
Цитата: Андрей от 07.08.2022, 23:56Час добрый!
У Хачатура на эту тему было чрезвычайно полезное видео. Полагаю, при необходимости можно просто скомпилировать этим софтом bat'ники со всеми необходимыми командами, обозвать их как-нибудь и запихать в контекстное меню с помощью редактора реестра.
Час добрый!
У Хачатура на эту тему было чрезвычайно полезное видео. Полагаю, при необходимости можно просто скомпилировать этим софтом bat'ники со всеми необходимыми командами, обозвать их как-нибудь и запихать в контекстное меню с помощью редактора реестра.
Цитата: --- НЛО --- от 08.08.2022, 00:06Разобраться как это влепить в контекстное меню, мне жизни не хватит. А для подобной компиляции я прежде пользовался Bat To Exe Converter, там есть возможность выбрать разрядность, запуск в скрытом режиме, поставить иконку и многое другое...
Разобраться как это влепить в контекстное меню, мне жизни не хватит. А для подобной компиляции я прежде пользовался Bat To Exe Converter, там есть возможность выбрать разрядность, запуск в скрытом режиме, поставить иконку и многое другое...
Цитата: Андрей от 08.08.2022, 00:16Цитата: Azov от 08.08.2022, 00:06Разобраться как это влепить в контекстное меню, мне жизни не хватит.
Добрый вечер.
Для этого есть специальные программы - редакторы контекстного меню.
Цитата: Azov от 08.08.2022, 00:06Разобраться как это влепить в контекстное меню, мне жизни не хватит.
Добрый вечер.
Для этого есть специальные программы - редакторы контекстного меню.
Цитата: Андрей от 08.08.2022, 00:24Иконку и прочее можно с помощью Resource Hacker'а влепить какую захочешь, или указать прямо в реестре. Если не хочется пользоваться дополнительным софтом - собираешь bat'ник, компилируешь, далее заходишь в [simple_tooltip content='Пуск ➜ Выполнить ➜ regedit']редактор реестра[/simple_tooltip], и по пути
HKEY_CLASSES_ROOT\DesktopBackground\Shell(если именно в контекстном меню Рабочего стола нужно) создаёшь папку, обзываешь её как угодно. В ней самой должно быть 3 строковых параметра (REG_SZ). По умолчанию - название. Вторую и третью назови Icon и Position. В Icon указываешь путь до иконки, в Position - предпочтительное положение (top - сверху, bottom - снизу, и т. п.). У неё так же должна быть подпапка под названием command, строковое значение в которой должно быть маршрутом до исполнительного файла (твоего скомпилированного bat'ника). Вот результат. Ещё раз - упомянутый выше маршрут в реестре именно для добавления пункта в контекстное меню рабочего стола, у проводника, например, другой маршрут.
Иконку и прочее можно с помощью Resource Hacker'а влепить какую захочешь, или указать прямо в реестре. Если не хочется пользоваться дополнительным софтом - собираешь bat'ник, компилируешь, далее заходишь в редактор реестра, и по пути СкопированоHKEY_CLASSES_ROOT\DesktopBackground\Shell (если именно в контекстном меню Рабочего стола нужно) создаёшь папку, обзываешь её как угодно. В ней самой должно быть 3 строковых параметра (REG_SZ). По умолчанию - название. Вторую и третью назови Icon и Position. В Icon указываешь путь до иконки, в Position - предпочтительное положение (top - сверху, bottom - снизу, и т. п.). У неё так же должна быть подпапка под названием command, строковое значение в которой должно быть маршрутом до исполнительного файла (твоего скомпилированного bat'ника). Вот результат. Ещё раз - упомянутый выше маршрут в реестре именно для добавления пункта в контекстное меню рабочего стола, у проводника, например, другой маршрут.
Цитата: --- НЛО --- от 08.08.2022, 00:27Спасибо большое Андрей и не подозревал, что такое существует. Буду изучать. Это очень полезный софт
Спасибо большое Андрей и не подозревал, что такое существует. Буду изучать. Это очень полезный софт
Цитата: Vlado от 08.08.2022, 00:44Доброго
reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Icon" /t reg_SZ /d "" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "MUIVerb" /t reg_SZ /d "Shutdown" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Position" /t reg_SZ /d "Bottom" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "SeparatorAfter" /t reg_SZ /d "" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Subcommands" /t reg_SZ /d "" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime" /ve /t reg_SZ /d "Компьютер будет выключен через ..." /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime" /v "Icon" /t reg_SZ /d "shell32.dll,-28" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime\command" /ve /t reg_SZ /d "shutdown -s -t 10" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\StopOff" /ve /t reg_SZ /d "Приостановить выключение" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\StopOff" /v "Icon" /t reg_SZ /d "imageres.dll,-1022" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\StopOff\command" /ve /t reg_SZ /d "shutdown -a" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\CloseApplication" /ve /t reg_SZ /d "Закрыть принудительно приложения" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\CloseApplication" /v "Icon" /t reg_SZ /d "shell32.dll,-240" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\CloseApplication\command" /ve /t reg_SZ /d "shutdown -f" /f >nul
HKEY_CLASSES_ROOT\DesktopBackground\Shell- к. меню раб. стола
Icon- путь к иконке
MUIVerb- название пункта
Position- позиция (top,bottom,center)
SeparatorAfter/SeparatorBefore- сепаратор после/перед
Subcommands- выпадающий список
Menu
Доброго
reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Icon" /t reg_SZ /d "" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "MUIVerb" /t reg_SZ /d "Shutdown" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Position" /t reg_SZ /d "Bottom" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "SeparatorAfter" /t reg_SZ /d "" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Subcommands" /t reg_SZ /d "" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime" /ve /t reg_SZ /d "Компьютер будет выключен через ..." /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime" /v "Icon" /t reg_SZ /d "shell32.dll,-28" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime\command" /ve /t reg_SZ /d "shutdown -s -t 10" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\StopOff" /ve /t reg_SZ /d "Приостановить выключение" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\StopOff" /v "Icon" /t reg_SZ /d "imageres.dll,-1022" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\StopOff\command" /ve /t reg_SZ /d "shutdown -a" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\CloseApplication" /ve /t reg_SZ /d "Закрыть принудительно приложения" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\CloseApplication" /v "Icon" /t reg_SZ /d "shell32.dll,-240" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\CloseApplication\command" /ve /t reg_SZ /d "shutdown -f" /f >nul
СкопированоHKEY_CLASSES_ROOT\DesktopBackground\Shell- к. меню раб. стола
СкопированоIcon - путь к иконке
СкопированоMUIVerb- название пункта
СкопированоPosition- позиция (top,bottom,center)
СкопированоSeparatorAfter/SeparatorBefore - сепаратор после/перед
СкопированоSubcommands- выпадающий список
Menu
Цитата: --- НЛО --- от 08.08.2022, 00:55Спасибо Огромное Vlado. Это просто великолепно. Есть только один минус, невозможно добавить своё время, в тот момент, когда кликаешь по пункту контекстного меню. Но я думаю, решу это с помощью добавления туда 20 разных пунктов с вариантами через 5 минут, 10, 15, 20, 30, 40, 50, 1час, 2 часа, 3 часа, 4 часа. )))
Ещё раз спасибо и низкий поклон до земли, за проделанную работу и за такой замечательный образец, уже с наглядным исполнением! Восхитительно!
Спасибо Огромное Vlado. Это просто великолепно. Есть только один минус, невозможно добавить своё время, в тот момент, когда кликаешь по пункту контекстного меню. Но я думаю, решу это с помощью добавления туда 20 разных пунктов с вариантами через 5 минут, 10, 15, 20, 30, 40, 50, 1час, 2 часа, 3 часа, 4 часа. )))
Ещё раз спасибо и низкий поклон до земли, за проделанную работу и за такой замечательный образец, уже с наглядным исполнением! Восхитительно!
Цитата: Vlado от 08.08.2022, 03:17Цитата: Azov от 08.08.2022, 00:55Есть только один минус, невозможно добавить своё время, в тот момент, когда кликаешь по пункту контекстного меню.
решу это с помощью добавления туда 20 разных пунктовНе следует
В CMD вот [simple_tooltip content='пришлось с этим, конечно, повозиться нехило']это[/simple_tooltip] вставьтеreg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime\command" /v "" /t REG_SZ /d "cmd.exe /cecho @echo off >> C:\1.bat&echo set \"varA=\" >>C:\1.bat&echo echo Введите через сколько сек ПК выключится>>C:\1.bat&echo set /p \"varA=\" >>C:\1.bat&echo shutdown -s -t %%%%varA%%%%>>C:\1.bat&echo exit>>C:\1.bat&start C:\1.bat" /f >nulВсегда вводите нужное кол-во секунд Вам
Цитата: Azov от 08.08.2022, 00:55Есть только один минус, невозможно добавить своё время, в тот момент, когда кликаешь по пункту контекстного меню.
решу это с помощью добавления туда 20 разных пунктов
Не следует
В CMD вот это вставьте
reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime\command" /v "" /t REG_SZ /d "cmd.exe /cecho @echo off >> C:\1.bat&echo set \"varA=\" >>C:\1.bat&echo echo Введите через сколько сек ПК выключится>>C:\1.bat&echo set /p \"varA=\" >>C:\1.bat&echo shutdown -s -t %%%%varA%%%%>>C:\1.bat&echo exit>>C:\1.bat&start C:\1.bat" /f >nul
Всегда вводите нужное кол-во секунд Вам
Цитата: Vlado от 08.08.2022, 03:23reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime\command" /v "" /t REG_SZ /d "cmd.exe /cecho @echo off >> C:\1.bat&echo set \"varA=\" >>C:\1.bat&echo echo Введите через сколько сек ПК выключится>>C:\1.bat&echo set /p \"varA=\" >>C:\1.bat&echo shutdown -s -t %%varA%%>>C:\1.bat&echo exit>>C:\1.bat&start C:\1.bat" /f >nulОпечатка выше
reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime\command" /v "" /t REG_SZ /d "cmd.exe /cecho @echo off >> C:\1.bat&echo set \"varA=\" >>C:\1.bat&echo echo Введите через сколько сек ПК выключится>>C:\1.bat&echo set /p \"varA=\" >>C:\1.bat&echo shutdown -s -t %%varA%%>>C:\1.bat&echo exit>>C:\1.bat&start C:\1.bat" /f >nul
Опечатка выше
Цитата: --- НЛО --- от 08.08.2022, 04:07Я пока что разобрался, как отредактировать контекстное меню. Даже и не видел, что Вы потом ответили. Закончил только что. )))
И результаты меня очень радуют. Вот что получилось:[spoiler title=""]
[/spoiler]
Представляю сколько бы я часов затратил, если бы сам это контекстное меню создавал с ноля, руководствуясь инструкцией Андрея
Но зато теперь знаю, как это делается. И что, за что отвечает. Это полезные знания, которые обязательно пригодятся и не один раз.Сейчас приступлю ко второму Вашему варианту.
Я пока что разобрался, как отредактировать контекстное меню. Даже и не видел, что Вы потом ответили. Закончил только что. )))
И результаты меня очень радуют. Вот что получилось:

Представляю сколько бы я часов затратил, если бы сам это контекстное меню создавал с ноля, руководствуясь инструкцией Андрея
Но зато теперь знаю, как это делается. И что, за что отвечает. Это полезные знания, которые обязательно пригодятся и не один раз.
Сейчас приступлю ко второму Вашему варианту.
Цитата: --- НЛО --- от 08.08.2022, 04:54У меня почему-то второй метод вообще не отрабатывает
chcp 1251 reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Icon" /t reg_SZ /d "mmres.dll,8" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "MUIVerb" /t reg_SZ /d "Завершение работы" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Position" /t reg_SZ /d "Bottom" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "SeparatorAfter" /t reg_SZ /d "" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Subcommands" /t reg_SZ /d "" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime" /ve /t reg_SZ /d "Выключить через" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime" /v "Icon" /t reg_SZ /d "Shell32.dll,265" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime\command" /v "" /t REG_SZ /d "cmd.exe /cecho @echo off >> C:\1.bat&echo set \"varA=\" >>C:\1.bat&echo echo Введите через сколько сек ПК выключится>>C:\1.bat&echo set /p \"varA=\" >>C:\1.bat&echo shutdown -s -t %%varA%%>>C:\1.bat&echo exit>>C:\1.bat&start C:\1.bat" /f >nul exitЯ вроде ничего не изменял. Возникает консоль cmd с надписью "Введите через сколько сек ПК выключится", пишу любое число, нажимаю Enter, окно окрашеватся в синий цвет и ничего не происходил. Оно не скрывается. Я всегда сохраняю любые cmd в ANSI кодировке. И вставляю
chcp 1251для корректного отображения кирилицы, может это повлияло и неподходит в этом конкретном случаи?[spoiler title=""]
[/spoiler]
У меня почему-то второй метод вообще не отрабатывает
chcp 1251 reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Icon" /t reg_SZ /d "mmres.dll,8" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "MUIVerb" /t reg_SZ /d "Завершение работы" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Position" /t reg_SZ /d "Bottom" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "SeparatorAfter" /t reg_SZ /d "" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown" /v "Subcommands" /t reg_SZ /d "" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime" /ve /t reg_SZ /d "Выключить через" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime" /v "Icon" /t reg_SZ /d "Shell32.dll,265" /f >nul reg add "HKCR\DesktopBackground\Shell\Shutdown\Shell\OffTime\command" /v "" /t REG_SZ /d "cmd.exe /cecho @echo off >> C:\1.bat&echo set \"varA=\" >>C:\1.bat&echo echo Введите через сколько сек ПК выключится>>C:\1.bat&echo set /p \"varA=\" >>C:\1.bat&echo shutdown -s -t %%varA%%>>C:\1.bat&echo exit>>C:\1.bat&start C:\1.bat" /f >nul exit
Я вроде ничего не изменял. Возникает консоль cmd с надписью "Введите через сколько сек ПК выключится", пишу любое число, нажимаю Enter, окно окрашеватся в синий цвет и ничего не происходил. Оно не скрывается. Я всегда сохраняю любые cmd в ANSI кодировке. И вставляю Скопированоchcp 1251 для корректного отображения кирилицы, может это повлияло и неподходит в этом конкретном случаи?

Цитата: Андрей от 08.08.2022, 05:05Попробуй сохранить в юникоде, по идее должно помочь.
Попробуй сохранить в юникоде, по идее должно помочь.
Цитата: --- НЛО --- от 08.08.2022, 05:16Цитата: Андрей от 08.08.2022, 05:05Попробуй сохранить в юникоде, по идее должно помочь.
Да нет - пробовал всевозможные UTF 16, 8, 7, 32 / LE ; BE, с BOM, без BOM - все варианты в AkelPad. Результат, кракозябры в контекстном меню. А функционал не появился. Скорее дело не в кодировке, а в том, что у меня что-то не работает на компе, как я полагаю.
Цитата: Андрей от 08.08.2022, 05:05Попробуй сохранить в юникоде, по идее должно помочь.
Да нет - пробовал всевозможные UTF 16, 8, 7, 32 / LE ; BE, с BOM, без BOM - все варианты в AkelPad. Результат, кракозябры в контекстном меню. А функционал не появился. Скорее дело не в кодировке, а в том, что у меня что-то не работает на компе, как я полагаю.