6 / 6 / 0
Регистрация: 09.10.2013
Сообщений: 251
1

Скрипт перезагрузки окна Notepad++

12.04.2020, 22:44. Показов 3682. Ответов 28
Метки нет (Все метки)

Требуется сделать две опции перезагрузки окна Notepad++, простая и с перезаписью файлов config.xml и session.xml.
В меню "Запуск" прописаны следующие строки для перезагрузки окна Notepad++:
XML
1
2
        <Command name="Restart1 Notepad++" Ctrl="no" Alt="no" Shift="no" Key="0">&quot;$(NPP_DIRECTORY)\VBS\Restart1.vbs&quot;</Command>
        <Command name="Restart2 Notepad++" Ctrl="no" Alt="no" Shift="no" Key="0">&quot;$(NPP_DIRECTORY)\VBS\Restart2.vbs&quot;</Command>
Этот скрипт запускается из меню "Запуск" и нормально перезагружает окно Notepad++
Visual Basic
1
2
3
'Restart1.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("cmd /c taskkill /im notepad++.exe && start notepad++.exe", 0, true)
Этот скрипт по идее должен закрыть окно Notepad++, далее запустить скрипт "Copy.vbs" который скопирует файлы с перезаписью файлы config.xml и session.xml на один каталог выше где находиться notepad++.exe только после этого должно запуститься окно Notepad++. Но это не фига не работает.
Visual Basic
1
2
3
'Restart2.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("cmd /c taskkill /im notepad++.exe && Copy.vbs && start notepad++.exe", 0, true)
Этот скрипт копируем файлы config.xml и session.xml из каталога "VBS" с перезаписью, на один каталог выше где находиться notepad++.exe
Visual Basic
1
2
3
'Copy.vbs
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile ".\*.xml", ".\..\", True
Это все пути моих файлов:
Код
C:\Users\Uzzer\Tools_Servis\TextCode\NPP++\npp.7.8.5.bin\notepad++.exe

C:\Users\Uzzer\Tools_Servis\TextCode\NPP++\npp.7.8.5.bin\VBS\Copy.vbs
C:\Users\Uzzer\Tools_Servis\TextCode\NPP++\npp.7.8.5.bin\VBS\Restart1.vbs
C:\Users\Uzzer\Tools_Servis\TextCode\NPP++\npp.7.8.5.bin\VBS\Restart2.vbs

C:\Users\Uzzer\Tools_Servis\TextCode\NPP++\npp.7.8.5.bin\VBS\config.xml
C:\Users\Uzzer\Tools_Servis\TextCode\NPP++\npp.7.8.5.bin\VBS\session.xml
Помогите пожалуйста привести в рабочее состояние это хозяйство, и желательно все объединить в один скрипт.

Добавлено через 11 минут
Если вручную запустить такой скрипт из каталога "VBS", то приходит перезагрузка окна и файлы config.xml и session.xml перезаписываются. Но вот из меню "Запуск" в Notepad++ это не работает.
Visual Basic
1
2
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("cmd /c taskkill /im notepad++.exe && Copy.vbs && start .\..\notepad++.exe", 0, true)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2020, 22:44
Ответы с готовыми решениями:

VBS скрипт для перезагрузки ALTUSEN
Доброго всем вечера. Толковые люди данного форума подскажите кто чем может. Ни как не могу...

Скрипт перезагрузки роутера при разрыве коннекта
Доброго времени, уважаемые знатоки. Хочу отредактировать скрипт для ADSL QDSL-1040WU-FON,...

Скрипт перезагрузки компьютера при отсутствии сети
Всем доброго дня, помогите советом - нужен скрипт перезагрузки компьютера при отсутствии сети, на...

Нужен скрипт для перезагрузки компьютера в случае отвала оборудования
Всех приветствую, имеется комп, система Windows 10 corporate, с несколькими видеокартами, АМД,...

28
5176 / 2404 / 947
Регистрация: 06.06.2017
Сообщений: 8,225
13.04.2020, 13:52 2
Цитата Сообщение от Beer-Sheva Посмотреть сообщение
и желательно все объединить в один скрипт.
А насколько это целесообразно?
Если нужен один скрипт, просто распишите точную последовательность действий для него.
0
6 / 6 / 0
Регистрация: 09.10.2013
Сообщений: 251
13.04.2020, 14:02  [ТС] 3
FlasherX, У меня не получается заставить его работать из меню "Запуск" с перезаписью файлов config.xml и session.xml (это для очистки всего кеша Notepad++, окна поиска, сессии и всего остального)

Добавлено через 2 минуты
Я не пойму как это все проще и надежнее реализовать
0
5176 / 2404 / 947
Регистрация: 06.06.2017
Сообщений: 8,225
13.04.2020, 14:05 4
Beer-Sheva, кого его, если скриптов приведено несколько? Целесообразность касается объединения. И моя рекомендация безотносительно кодов была вполне однозначной.
0
6 / 6 / 0
Регистрация: 09.10.2013
Сообщений: 251
13.04.2020, 14:49  [ТС] 5
FlasherX, Про обеднение я имел ввиду про Restart1.vbs и Copy.vbs, то есть:
1. Завершить процесс notepad++.exe
2. Скопировать файлы config.xml и session.xml на один каталог выше (Copy.vbs)
3. Запустить процесс notepad++.exe
Такое можно реализовать на vbs? Чтобы все работало из из каталога "VBS" который будет в корне с notepad++.exe
0
5176 / 2404 / 947
Регистрация: 06.06.2017
Сообщений: 8,225
13.04.2020, 15:50 6
Лучший ответ Сообщение было отмечено Beer-Sheva как решение

Решение

Цитата Сообщение от Beer-Sheva Посмотреть сообщение
Такое можно реализовать на vbs?
Конечно. Ничего сложного:
Visual Basic
1
2
3
4
5
6
7
8
Set oWSH = CreateObject("WScript.Shell")
oWSH.CurrentDirectory = Left(WSH.ScriptFullName, InStrRev(WSH.ScriptFullName, "\"))
Q = "winmgmts:\\.\root\cimv2:win32_process.Handle="
With GetObject(Q & oWSH.Exec("rundll32 kernel32,Sleep").ProcessId)
   GetObject(Q & GetObject(Q & .ParentProcessId).ParentProcessId).Terminate: .Terminate
End With
CreateObject("Scripting.FileSystemObject").CopyFile "*.xml", "..", 1
oWSH.Run "..\notepad++.exe": Set oWSH = Nothing
1
6 / 6 / 0
Регистрация: 09.10.2013
Сообщений: 251
13.04.2020, 23:13  [ТС] 7
FlasherX, Большое спасибо вашу помощь

Добавлено через 2 часа 16 минут
FlasherX, Ваш скрипт перезагружает окно программы в несколько раз быстрее!
… чем этот код:
Windows Batch file
1
cmd /c taskkill /im notepad++.exe && start notepad++.exe
Как более правильно запускать VBScript, эти три варианта все работают.
XML
1
2
3
        <Command name="Restart Notepad++" Ctrl="no" Alt="no" Shift="no" Key="0">&quot;$(NPP_DIRECTORY)\VBS\Restart.vbs&quot;</Command>
        <Command name="Restart Notepad++" Ctrl="no" Alt="no" Shift="no" Key="0">cscript.exe /nologo VBS\Restart.vbs &quot;$(NPP_DIRECTORY)&quot;</Command>
        <Command name="Restart Notepad++" Ctrl="no" Alt="no" Shift="no" Key="0">wscript.exe /nologo VBS\Restart.vbs &quot;$(NPP_DIRECTORY)&quot;</Command>
0
5176 / 2404 / 947
Регистрация: 06.06.2017
Сообщений: 8,225
13.04.2020, 23:54 8
Пожал'ста.
Первый вариант.
Правда, не понимаю, зачем там Ctrl="no" Alt="no" Shift="no" Key="0".
0
6 / 6 / 0
Регистрация: 09.10.2013
Сообщений: 251
13.04.2020, 23:59  [ТС] 9
FlasherX, Если открыть в чистом окне файлы, и перегрузить окно через ваш скрипт то файлы не сохраняются в окне программы. Седьмую строку в скрипте я закомментировал, чтобы исключить перезапись XML файлов настройки и сессии. Может быть такое что из за высокой скорости перезагрузки окна данные о сессии не успевают прописаться в файле session.xml? Загрузил короткий ролик чтобы наглядно показать про что я говорю.
Миниатюры
Скрипт перезагрузки окна Notepad++  
0
6 / 6 / 0
Регистрация: 09.10.2013
Сообщений: 251
14.04.2020, 00:02  [ТС] 10
Цитата Сообщение от FlasherX Посмотреть сообщение
Правда, не понимаю, зачем там Ctrl="no" Alt="no" Shift="no" Key="0".
Это сама программа дописывает, и без этой строки вообще не пашет))
0
5176 / 2404 / 947
Регистрация: 06.06.2017
Сообщений: 8,225
14.04.2020, 00:18 11
Ясно.

Цитата Сообщение от Beer-Sheva Посмотреть сообщение
Седьмую строку в скрипте я закомментировал, чтобы исключить перезапись XML файлов настройки и сессии.
Тогда это выходит за рамки условия.
Цитата Сообщение от Beer-Sheva Посмотреть сообщение
Может быть такое что из за высокой скорости перезагрузки
Нет. Дело не в скорости, а в принудительном способе завершения процесса аналогично taskkill /f.
1
6 / 6 / 0
Регистрация: 09.10.2013
Сообщений: 251
14.04.2020, 00:29  [ТС] 12
FlasherX, Такая же вещь проходит и с моим кодом, а если удалить ключ /f то вновь открытые файлы их окна не вылетают.
Windows Batch file
1
2
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("cmd /c taskkill /f /im notepad++.exe && start notepad++.exe", 0, true)
Добавлено через 3 минуты
Просто я подумал если комментировать №7 строку из вашего кода можно получить два скрипта, один простая перезагрузка а второй с перезаписью файлов)))
0
5176 / 2404 / 947
Регистрация: 06.06.2017
Сообщений: 8,225
14.04.2020, 00:47 13
Лучший ответ Сообщение было отмечено Beer-Sheva как решение

Решение

Цитата Сообщение от Beer-Sheva Посмотреть сообщение
Такая же вещь проходит и с моим кодом
В исходном коде выше ключа /f как раз нет.

Отправлять WM_CLOSE на WSH можно только с подключением сторонней библиотеки. Поэтому в данном случае только c taskkill:
Visual Basic
1
2
3
4
5
6
7
8
Q = "winmgmts:\\.\root\cimv2:win32_process.Handle="
With CreateObject("WScript.Shell")
  .CurrentDirectory = Left(WSH.ScriptFullName, InStrRev(WSH.ScriptFullName, "\"))
  With GetObject(Q & .Exec("rundll32 kernel32,Sleep").ProcessId)
    PID = GetObject(Q & .ParentProcessId).ParentProcessId: .Terminate
  End With
  .Run "taskkill /PID " & PID, 0, 1: .Run "..\notepad++.exe"
End With
1
6 / 6 / 0
Регистрация: 09.10.2013
Сообщений: 251
14.04.2020, 01:05  [ТС] 14
FlasherX, С этим кодом перезагрузка идет нормально, и открытые файлы не вылетают из окна!
Цитата Сообщение от FlasherX Посмотреть сообщение
Отправлять WM_CLOSE на WSH можно только с подключением сторонней библиотеки.
а о какой библиотеке идет речь?

Добавлено через 4 минуты
Цитата Сообщение от FlasherX Посмотреть сообщение
В исходном коде выше ключа /f как раз нет.
я тестировал оба варианта))
0
5176 / 2404 / 947
Регистрация: 06.06.2017
Сообщений: 8,225
14.04.2020, 01:51 15
Цитата Сообщение от Beer-Sheva Посмотреть сообщение
а о какой библиотеке идет речь?
Я не какую-то конкретную имел в виду. Из тех, что знаю: JSSys3, AutoItX3, dynwrapx, wshAPIToolkitObject.
0
6 / 6 / 0
Регистрация: 09.10.2013
Сообщений: 251
14.04.2020, 09:41  [ТС] 16
Да это и не нужно, и так все отлично пашет!

Добавлено через 2 часа 13 минут
Цитата Сообщение от FlasherX Посмотреть сообщение
Правда, не понимаю, зачем там Ctrl="no" Alt="no" Shift="no" Key="0".
И это пригодилось , повесил горячие клавиши Ctrl+F5 и Ctrl+Alt+F5 и получилось вообще шикарно! Это очень удобно особенно когда редактируешь новые опции в контекстном меню программы, когда надо постоянно и много раз перезагружать программу чтобы редактирование вступило в силу.
Вы наш спаситель
0
5176 / 2404 / 947
Регистрация: 06.06.2017
Сообщений: 8,225
14.04.2020, 12:19 17
Цитата Сообщение от Beer-Sheva Посмотреть сообщение
Да это и не нужно
А я и не писал, что это обязательно при наличии taskkill.

Про хоткеи мне рассказывать не нужно, я и сам клавиатурник в большей степени. Только предпочёл бы Ctrl+Shift+R в данном случае.
0
6 / 6 / 0
Регистрация: 09.10.2013
Сообщений: 251
14.04.2020, 13:06  [ТС] 18
Цитата Сообщение от FlasherX Посмотреть сообщение
Только предпочёл бы Ctrl+Shift+R в данном случае.
Эта комбинация уже занята вкл\выкл запись макроса.
0
5176 / 2404 / 947
Регистрация: 06.06.2017
Сообщений: 8,225
14.04.2020, 13:42 19
Beer-Sheva, ну это уже на вкус и цвет (R — Reload/Restart/Replace/Rebuild/Restore/Recover/Record/Run/Resample/Remix).
1
6 / 6 / 0
Регистрация: 09.10.2013
Сообщений: 251
17.03.2021, 13:20  [ТС] 20
Цитата Сообщение от FlasherX Посмотреть сообщение
Visual Basic
1
2
3
4
5
6
7
8
Q = "winmgmts:\\.\root\cimv2:win32_process.Handle="
With CreateObject("WScript.Shell")
  .CurrentDirectory = Left(WSH.ScriptFullName, InStrRev(WSH.ScriptFullName, "\"))
  With GetObject(Q & .Exec("rundll32 kernel32,Sleep").ProcessId)
    PID = GetObject(Q & .ParentProcessId).ParentProcessId: .Terminate
  End With
  .Run "taskkill /PID " & PID, 0, 1: .Run "..\notepad++.exe"
End With
Этот скрипт прекрасно работал пока я не обновился с npp.7.8.6.portable и до npp7.9.4.portable (все версии беру только с оф сайта). И не пойму что случилось, этот скрипт перезагрузки блокнота перестал работать если папка с программой находиться не на системном диске. Самое интересное что эти же скрипты в npp.7.8.6.portable работают на любом разделе жесткого диска!
Не подскажете в чем может быть проблема?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2021, 13:20
Помогаю со студенческими работами здесь

скрипт для Notepad++
Есть xml файл, с помощью скрипта для notepad++, в нем нужно найти все строчки...

Скрипт поиска и замены для notepad++ на Python
Есть программа для который нужно обычный текст заменять на коды. Например. для вставки &quot;exit&quot;...

Улучшить скрипт для плагина под notepad++
Есть: Всем известная программа notepad++. Под неё существует плагин для юзерских...

Скрипт или программа для облегчения работы с Notepad++
Дорого времени суток! Нужно какое-нибудь решение... Либо скрипт, либо программа, или хотя...

Как написать скрипт для скрытия модального окна при клике вне окна(на боди) ?
У меня модальное окно вообще даже не открывается при нажатии на кнопку,потому что у меня так...

Скрипт перезагрузки (запретить suspend)
при командах su sudo reboot компьютер переходит в режим suspend ждущий можно ли сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru