rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
Решил выложит модульную конструкцию из трёх файлов, которой с удовольствием пользуюсь Первый файл - Folders.bat - является главным и интегрирующим в себя управление другими двумя файлами
Folders.batCLS @echo off if "%~1" == "" (start "" /min "%comspec%" /c "%~f0" any_word & exit /b) set OUTPUT=nul if "%STDOUT_REDIRECTED%" == "" ( set STDOUT_REDIRECTED=yes cmd.exe /c %0 1>%OUTPUT% 2>%OUTPUT% exit /b %ERRORLEVEL% ) :: CОБИРАЕМ ДАННЫЕ ОБ ОТКРЫТЫХ ОКНАХ ПРОВОДНИКА И ЗАПИСЫВАЕМ ИХ В Folders.cmd Folders.ps1 :: --- Рабочий код --- :: --- Конец рабочего кода --- :: ЖЁСТКО ПЕРЕГРУЖАЕМ ПРОВОДНИК :: Первая часть :: Notification Area Cleaner :: Created by Hally Master hally_master (at) yahoo (dot) com :: Distributed by www.7tutorials.com :: WARNING! This utility restarts your shell (Explorer.exe) and clears your notification area icon cache taskkill /im explorer.exe /f reg delete "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v IconStreams /f reg delete "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v PastIconsStream /f :: Часть вторая (самопал) rem убиваем и запускаем по новой explorer.exe taskkill.exe /F /IM explorer.exe rem убиваем taskmgr.exe rem taskkill.exe /F /IM taskmgr.exe :: Часть третья (и последняя) :: Перезапуск диспетчера окон Windows Explorer NET STOP UXSMS NET START UXSMS start "Shell Restarter" /d "%systemroot%" /i /normal explorer.exe :: explorer /select,"%0" :: C:\WINDOWS\explorer.exe /e, taskkill.exe /F /IM conhost.exe :: ВОССТАНАВЛИВАЕМ ОТКРЫТЫЕ ОКНА ПРОВОДНИКА Folders.cmd 1. Итак, Folders.bat первым делом запускает второй файл Folders.ps1, который cобирает данные об открытых окнах проводника и записывает их в третий файл Folders.cmd 2. Затем в Folders.bat идёт прикладной модуль В нём можно прописать нужный Вам код. Я, например, прописал жёсткую перезагрузку Проводника Windows Использую и для других частных ситуаций типа перезапуска проигрывателя вместе со всем звуковым трактом винды и т.п. 3. Ну а под конец Folders.bat запускает полученный на первом этапе Folders.cmd, который содержит в себе адреса окон Проводника, которые были открыты в момент запуска батника Folders.bat И окна проводника восстанавливаются в том виде и количестве, которое было до запуска Folders.bat Вот такая модульная конструкция. Да, самый главное забыл - вот Folders.ps1, который и сохраняет адреса открытых окон Проводника в файл Folders.cmdFolders.ps1(New-Object -ComObject 'Shell.Application').Windows() | ForEach-Object { $localPath = $_.Document.Folder.Self.Path "C:\WINDOWS\explorer.exe /e, `"$localPath`"" }| Set-Content Folders.cmd Если кого заинтересовала моя конструкция и есть предложения как её упростить, то буду тока рад Вашим советам. Особо интересно перевести конструкцию к одному языку, лучше к cmd, поскоку PS1 я даже читать не понимаю ... Все исходники брал с разных ресурсов по cmd и PowerShell и перерабатывал\программировал по аналогии и методом научного тыка PS 1 Файлы Folder.bat и Folder.PS1 легко содаются из приведённых выше кодов. Foder.cmd не привожу, поскоку он создаётся в процессе работы. Файлы, естественно, должны лежать друг около друга. PS 2 У меня в системе файды PS1 запускаются из проводника Windows Если есть необходимость, то добавлю готовые файлы в раздачу.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1324
- Репутация:127[+] [-]
|
96863 Если кого заинтересовала моя конструкция и есть предложения как её упростить, то буду тока рад Вашим советам. Особо интересно перевести конструкцию к одному языку, лучше к cmd, поскоку PS1 я даже читать не понимаю . Вряд ли cmd сможет выполнить такой код. Shell.Application это объект проводника, через него можно выполнять любые команды, всё что может проводник. Здесь метод ".Windows()" получает все окна проводника. Далее ForEach-Object - цикл , в котором перечисление объектов окон, метод ".Self.Path" свой-путь в переменную $localPath, ну и следующая стандартная команда запуска проводника с передаваемым ему пути. Если что справка по объектам я выкладывал вместе с AkelPad, там есть файл wsh.chm
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1324
- Репутация:127[+] [-]
|
rekshd, мне пока лень, но PureBasic и AutoIt3 может разными путями всё это проделать. Найти окна проводника, скопировать текст с адресной строки, сохранить в файл. Или получить доступ к объекту проводника и обычным запросом получить путь. Но только код по работе с объектом комбайн ещё тот.
|
rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
Да, после регистрации сейчас крайнего PKM_DLL перестал вообще запускаться Проводник по хоткею Win+E И ПКМ по дереву папок также вышибает Explorer в ошибку и перегружает его ... Зато стало выводится большое количество выделяемых файлов, чего раньше не было. (при debug=1)
|
Отправлено: 11-Сен-2022 07:29
(спустя 2 часа 38 минут)
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1324
- Репутация:127[+] [-]
|
96869Да, после регистрации сейчас крайнего PKM_DLL перестал вообще запускаться Проводник по хоткею Win+E Перекачай, исправил. Проблема в регистрации Folder вместо Directory. Я пробовал метод тыка чтобы избавиться от падения, так как один вариант подразумевает папки, второй включая объекты, типа "Мой компьютер".
|
Текущее время: 03-Дек 20:31
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|