View previous topic :: View next topic |
Author |
Message |
Total7zip

Joined: 27 Nov 2010 Posts: 287
|
(Separately) Posted: Tue Mar 22, 2011 17:50 Post subject: TCShellCd- переход cd по значению из любого ключа реестра |
|
|
TCShellCd - утилита для TC, позволяющая открывать в активной панели
любую папку, путь к которой хранится в реестре Windows.
Идея взята из псевдопеременных окружения TC (Avada: Ссылка заменена более актуальной.)
Например "cd %$PERSONAL%" открывает папку пользователя Мои Документы.
Это здорово, но этих переменных мало, например я не нашел папки CD Burning, Шаблоны и др.
То есть Microsoft добавляет новые папки в реестр, но мы не можем этим пользоваться пока не обновится TC.
К тому же не только микрософт хранит пути в реестре, например:
Code: | HKEY_LOCAL_MACHINE\SOFTWARE\VST\VSTPluginsPath |
Как использовать:
1) конечно запускать из под TC, например через меню Ctrl+D
2) указать в качестве параметра путь к нужному значению в реестре.
Например
Code: | TCShellCd.exe HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\NetHood
|
откроет папку NetHood пользователя в активной панели TC.
Поддерживаются любые ключи реестра.
Ветку реестра можно указывать в полном или сокращенном форматах:
HKCU или HKEY_CURRENT_USER
HKLM или HKEY_LOCAL_MACHINE
и т.п.
Если значение указывает на файл, то в TC будет открыта папка с этим файлом.
Если нужно считать (Default) значение - поставьте в конце \.
Например, перейдем в папку по ключу регистрации COM объекта:
Code: | TCShellCd.exe HKCR\CLSID\{6ED70EDA-595D-4298-B417-250CCBA7FFDA}\LocalServer32\ |
эта команда откроет папку, в которой у вас зарегистрирован
Script Helper ActiveX for TС (TCWSHelp.exe)
Если папка не существует, то команда игнорируется и состояние панели TC не меняется.
интересные ключи от Microsoft, которым, кажется, нет соответствия в псевдопеременных окружения TC
Code: | HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Administrative Tools
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SendTo
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\CD Burning
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cookies
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Favorites
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\History
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Local Settings
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\NetHood
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\PrintHood
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Recent
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Templates
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\CommonMusic
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\CommonVideo
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Administrative Tools
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Programs
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Favorites
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Templates
загрузки (downloads) windows 7:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\{374DE290-123F-4565-9164-39C4925E467B}
|
http://narod.yandex.ru/disk/10841586001/TCShellCD_0015.7z _________________ Total7zip - архиваторный+content+lister плагин, 0.8.5.2
Last edited by Total7zip on Fri Apr 22, 2011 18:56; edited 2 times in total |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Apr 14, 2011 18:07 Post subject: |
|
|
Total7zip wrote: | интересные ключи от Microsoft | Все ключи в этих кустах сопоставлены с системными папками и переменными среды, а значит в указанные там каталоги можно легко зайти по команде cd. Поэтому утилита для тамашних ключей ничего отличимого от стандартных возможностей в плане портабельного перехода не даст.
Вот HKCR\CLSID, возможно, поковырять стоит, вероятно, что-то полезное и найдётся. Если уже есть конкретные примеры кроме Хелпера, то неплохо было бы их огласить для общей пользы.
А вот научить утилиту запускать диалоги согласно GUID было бы действительно полезной задачей (естественно, всех возможных, а не только тех, что запускаются с shell на висте/7).
! | Avada: | Вызванная первой частью этого поста дискуссия, которую далее затеяли Flasher и ApceH, превратилась, к сожалению, в затяжной флейм, отягощённый личными выпадами.
По совокупности множественного нарушения правил форума (не расписывая подробно, кто, что и когда нарушил), делаю замечание обоим спорщикам. Ряд постов удалён или отредактирован. | |
|
Back to top |
|
 |
ApceH

Joined: 08 Apr 2011 Posts: 316 Location: Димитровград
|
(Separately) Posted: Sat Apr 16, 2011 17:49 Post subject: |
|
|
Ура! Спасибо!
Мне нужно было переходить в папку "Загрузки"... И написал скрипт GoToPathFromRegistry.js (в kIT PPP вплоть до 11.4 есть).
Там костыль на костыле... Чтение из реестра-то легко, а вот вбить в ТС надпись "cd D:\Downolads", например, проблематично... Слал через SendKeys, но чтобы не влияла текущая раскладка приходилось использовать буфер обмена через библиотечку ClipboardHelper.dll, которую регистрировать надо заранее...
Короче, наконец-то будет нормальное решение!
Кстати, вот ключ с путём к папке "Загрузки":
Code: | HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\{374DE290-123F-4565-9164-39C4925E467B} | Проверил, переходит! |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Sat Apr 16, 2011 18:39 Post subject: |
|
|
Думаю, будет полезно создать в рамках этой (или отдельной) темы аналог ветки "Кнопки ТС". То есть автор прежде всего и вдохновленные его идеей пользователи выкладывают полезные пути, найденный в дебрях реестра. Лично я пока в приведенных примерах не нашел для себя что-либо интересное. Все пути, по которым я часто перехожу, уже давно вбиты в HotDirList или в соответствующие кнопки на панелях. Но если появятся интересные решения, возможно, и я что-нибудь стоящее откопаю.
И еще. Правильно ли я понимаю, что всевозможные приложения тоже пишут свои пути в реестр и что утилита поможет ими воспользоваться? (это я к тому, что приложений разных туева хуча, и копать реестр в поисках конкретных путей - сизифов труд). Может ли утилита помочь в этом поиске? _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
ApceH

Joined: 08 Apr 2011 Posts: 316 Location: Димитровград
|
(Separately) Posted: Wed Apr 20, 2011 19:05 Post subject: |
|
|
Total7zip
Я так понял, что прога сработает только если родитель — totalcmd? И только на него влияет?
Известно, что в XP нет "официальной" папки Загрузки... Но оставлять не на всех ОС работающую кнопку на панели не хорошо! Тем более что у многих пользователей XP имеется такая папка, куда они обычно загружают всё с инета... Итак, что я задумал...
Приведу свой обновлённый скрипт для захода в папку из реестра:
Code: | /********************************************************************/
// Имя: GoToPathFromRegistry.js
// Автор: Шаповалов Арсений aka ApceH Hypocrite
// Описание: Переход TC в папку, путь которой получается из рестра по указанному ключу.
// Если ключ отсутствует (например, в устаревшей ОС), предлагается выбрать папку.
// Скрипт внесёт недостающий ключ.
/********************************************************************/
//Создаем объект ws
ws=WScript.CreateObject("WScript.Shell");
args=WScript.Arguments;
if (args.Count() < 2) {
ws.Popup("Скрипт предназначен для запуска с панели Total Commander!\n\nСкрипт ожидает 2 или 3 параметра:\n• название ключа реестра с полным путём,\n• название значения реестра\n• локализованное название папки\n\nВнимание!\n• Нужно заключать в кавычки параметры, содержащие пробелы.\n• Слеши в пути НЕ нужно дублировать (экранировать).\n• В конце пути слеша быть НЕ должно.",0,"Неправильное использование",16);
WScript.Quit(1);
}
KeyPath=args(0);
ValueName=args(1);
FolderName=(args.Length>=3)?" \""+args(2)+"\"":", которая должна была открыться";
//Читаем значение из реестра
try{
Value=ws.RegRead(KeyPath+"\\"+ValueName);
}
catch(e){
//ключ не найден
ShellApp=WScript.CreateObject("Shell.Application");
FolderDlg=ShellApp.BrowseForFolder(0, "Требуемый ключ реестра не найден!\nУкажите папку"+FolderName+",\nчтобы добавить недостающий ключ.", 0x11);
//
if (FolderDlg) {
Value=FolderDlg.Items().Item().Path;
ws.RegWrite(KeyPath+"\\"+ValueName, Value);
}
else WScript.Quit(2);
}
//==============
//вместо этого костыля хотелось бы запустить TCShellCD.exe...
//но его родителем будет wscript, поэтому он не сработает(((
//Создаём объект буфера обмена
try{
clip=new ActiveXObject("ClipboardHelper.Clipboard");
}
catch(e){
ws.Popup("Необходимая библиотека ClipboardHelper.dll не зарегистрирована!\nДля регистрации выполните от имен Администратора скрипт SystemRegister.cmd,\n находящийся в папке !Staging в месте, куда установлен kIT PPP.",0,"Неправильное использование",16)
WScript.Quit(3);
}
try{
//Получаем текущее содержимое буфера
temp=clip.GetClipboardText();
//Заносим в буфер обмена команду
clip.SetClipboardText("cd "+Value);
//"Вводим" в TC
ws.SendKeys("{RIGHT}");
ws.SendKeys("^a");
ws.SendKeys("^v");
WScript.Sleep(100);
ws.SendKeys("{ENTER}");
//Надо подождать, потому что может вставить возвращенный старый текст!
WScript.Sleep(1000);
//Возвращаем текст как было
clip.SetClipboardText(temp);
}
catch(e) {}
/************* Конец ************************************************/ |
Кнопка примерно такая: Code: | TOTALCMD#BAR#DATA
wscript %COMMANDER_PATH%\ADDONS\GoToPathFromRegistry.js
"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" {374DE290-123F-4565-9164-39C4925E467B}
ICONS\downloads.ico
Перейти в папку "Загрузки"
%COMMANDER_PATH%\ADDONS\
1
-1
|
То есть я хочу, чтобы если человек нажал кнопку под устаревшей ОС, его попросили самому выбрать папку, которую он использует для "загрузок"...
Указанная папка прописывается в реестр и далее человек как-будто сидит под современной ОС!
Всё бы хорошо, но вместо шаманства с буфером обмена и посылкой нажатий клавиш, я не смог использовать вашу прогу TCShellCD, потому что её родителем становится wscript (или даже просто система, если он успевает завершится)... Я не смог найти, как сменить родителя процесса в WSH, да и это будет не менее идиотский костыль...
Таким образом, очень надеюсь, что вы реализуете в самой проге такой функционал:
если такого ключа нет (но синтаксически всё в порядке),
запросить указать папку
и записать её путь в переданный ключ реестра,
а затем перейти в эту папку, обычным способом (а в дальнейшем ключ уже будет существовать).
Ну конечно, если нажал Отмена, то ключ не создаём и в папку не входим. |
|
Back to top |
|
 |
Total7zip

Joined: 27 Nov 2010 Posts: 287
|
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Apr 21, 2011 16:55 Post subject: |
|
|
Total7zip wrote: | про дискуссию на тему "надо- не надо" - ну нет переменных в системе для Administrative Tools, SendTo, CD Burning, Templates, CommonMusic и т.п. зачем спорить-то? | И действительно, зачем спорить-то?
Code: | Administrative Tools: cd %$PROGRAMS%\Administrative Tools
CD Burning: cd %$LOCAL_APPDATA%\Microsoft\Windows\Burn\Burn
SendTo: cd %$APPDATA%\Microsoft\Windows\SendTo
SendTo: cd %USERPROFILE%\SendTo
Templates: cd %$APPDATA%\Microsoft\Windows\Templates
CommonMusic: cd %Public%\Music |
|
|
Back to top |
|
 |
ApceH

Joined: 08 Apr 2011 Posts: 316 Location: Димитровград
|
(Separately) Posted: Thu Apr 21, 2011 18:51 Post subject: |
|
|
Давайте, как и советовал Вахмурка, составим список ключей.
Причем не просто ссылки на ветки реестра, а по-отдельности с кратким пояснением. И в синтаксисе, сразу пригодном для применения с TCShellCD.
Вот из ветки HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders:
Code: | HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Desktop ;общий рабочий стол
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Start Menu ;общее меню Пуск
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\CommonVideo ;общее видео
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\CommonPictures ;общие рисунки
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Programs ;общие программы
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\CommonMusic ;общая музыка
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Startup ;общий автозапуск
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Documents ;общие документы |
Last edited by ApceH on Thu Apr 21, 2011 18:54; edited 1 time in total |
|
Back to top |
|
 |
Total7zip

Joined: 27 Nov 2010 Posts: 287
|
(Separately) Posted: Thu Apr 21, 2011 18:52 Post subject: |
|
|
2Flasher
Quote: | Templates: cd %$APPDATA%\Microsoft\Windows\Templates |
на русской XP не работает.
зато работает Quote: | TCShellCd.exe HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Templates |
ради чего и создавалась эта утилита. _________________ Total7zip - архиваторный+content+lister плагин, 0.8.5.2 |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Apr 21, 2011 19:07 Post subject: |
|
|
Total7zip
Ну в XP много чего нет, например переменной %Public%, это же не значит, что теперь мне эту переменную нет смысла использовать?
Да, системных папок прибавилось, соответственно в XP нет доступа к ряду папок, которые есть в 7. Так что всё логично.
Но у меня всё-таки просьба вернуться к моему первому сообщению, касаемому определённого куста и запуска диалогов по GUID. А эти разговоры про 4 ветки оставим. |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Thu Apr 21, 2011 19:13 Post subject: |
|
|
Quote: | Вот из ветки HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders | Я позволю себе дополнить свое предложение. Давайте выкладывать только те пути из реестра, которым не соответствует ни одна переменная окружения. В списке выше таковых, по-моему, нет. или я ошибаюсь?
Если ключи реестра дублируют переменные окружения, у последних явное преимущество: для их использования не надо скачивать никаких утилит, операционная система сама и есть такая утилита.
Прошу прощения, что своей неконкретностью кого-то обнадежил  _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Apr 21, 2011 19:26 Post subject: |
|
|
Вахмурка wrote: | В списке выше таковых, по-моему, нет. или я ошибаюсь? | %$COMMON_APPDATA%
%$COMMON_DESKTOPDIRECTORY%
%$COMMON_DOCUMENTS%
%$COMMON_PICTURES%
%$COMMON_STARTMENU%
%$COMMON_PROGRAMS%
%$COMMON_STARTUP% |
|
Back to top |
|
 |
Total7zip

Joined: 27 Nov 2010 Posts: 287
|
(Separately) Posted: Thu Apr 21, 2011 19:30 Post subject: |
|
|
по-моему вот для этих ключей нет переменных среды
Code: |
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Administrative Tools
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SendTo
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\CD Burning
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cookies
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Favorites
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\History
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Local Settings
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\NetHood
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\PrintHood
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Recent
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Templates
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\CommonMusic
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\CommonVideo
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Administrative Tools
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Programs
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Startup
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Favorites
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Templates
|
_________________ Total7zip - архиваторный+content+lister плагин, 0.8.5.2 |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Thu Apr 21, 2011 20:40 Post subject: |
|
|
Да хоть по названию: Quote: | HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Startup | Проверьте - разве они ведут не в одно и то место? _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Thu Apr 21, 2011 21:03 Post subject: |
|
|
Total7zip
А если добавить в утилиту "или"?
Ну, указываем переменную окружения, если она есть - переходим по ее значению и всё, если нет - далее, через какой-нибудь разделитель - ключ реестра, если существует - по его значению и закончили, если нет - опять, через тот же разделитель, умолчание (например, %COMMANDER_DRIVE%\temp - о портабельности, вроде, говорим), если не существует - создать. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|