View previous topic :: View next topic |
Author |
Message |
ales128
Joined: 11 Jul 2011 Posts: 6
|
(Separately) Posted: Mon Jul 11, 2011 08:56 Post subject: TC не понимает библиотеки Windows 7 |
|
|
Когда я создаю библиотеку Win 7 (virtual folder), проводник ее отлично понимает, но вот TC пытается открыть ее как файл с неизвестным расширением
Помогите, кто знает! |
|
Back to top |
|
 |
Rodny

Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Tue Jul 12, 2011 10:38 Post subject: |
|
|
Как ты её открываешь? В библиотеки нужно входить через Рабочий стол, команда cm_OpenDesktop. |
|
Back to top |
|
 |
ales128
Joined: 11 Jul 2011 Posts: 6
|
(Separately) Posted: Tue Jul 12, 2011 13:24 Post subject: |
|
|
Настроил значек с командой cm_OpenDesktop. На рабочем столе отображаются библиотеки и в них можно войти
Но моя цель создать библиотеку не в стандартном расположении библиотек - c:\Users\[My user]\AppData\Roaming\Microsoft\Windows\Libraries , а в произвольной директории и чтобы входить в нее можно было, как в проводнике - по Enter или DoubleClick |
|
Back to top |
|
 |
Rodny

Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Tue Jul 12, 2011 13:48 Post subject: |
|
|
ales128
Я не понимаю, что значит "создать библиотеку не в стандартном расположении библиотек... а в произвольной директории". При добавлении папок в существующие библиотеки, при создании новых библиотек все они доступны через рабочий стол.
Рассказывай по шагам, что делать. |
|
Back to top |
|
 |
ales128
Joined: 11 Jul 2011 Posts: 6
|
(Separately) Posted: Tue Jul 12, 2011 14:24 Post subject: |
|
|
Есть разные варианты, вплоть до того что вручную написать XML содержимое файла library-ms. Вот один из вариантов:
Добавить библиотеку в существующие, затем взять ее и скопировать или переместить из c:\Users\[My user]\AppData\Roaming\Microsoft\Windows\Libraries\[My library].library-ms
в необходимое место. После этого она распознается проводником как любая другая библиотека
Добавлено спустя 36 минут:
Вот еще как создавать библиотеки:
http://winreview.ru/Sekreti-Windows/808/Tonkaya-nastrojka-rasshirenij-fajlov-v-Windows-7-Menyu-Sozdat-
Смотрим "Пример №2. Создаем библиотеки в любом месте файловой системы" |
|
Back to top |
|
 |
Rodny

Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Tue Jul 12, 2011 17:45 Post subject: |
|
|
ales128
Ясно. Не знаю, как устроен механизм виртуальных папок TC, но сомневаюсь, что он обращается с библиотеками напрямую. Думаю, что Гислер просто не предусмотрел возможности работать с этими файлами непосредственно.
Подожди, возможно местные плагинописатели посодействуют. Или сразу иди на оф. форум с запросом. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jul 12, 2011 17:49 Post subject: |
|
|
Rodny wrote: | возможно местные плагинописатели посодействуют | Случаем, уже не посодействовали? |
|
Back to top |
|
 |
Rodny

Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Tue Jul 12, 2011 17:59 Post subject: |
|
|
Flasher
А где ты у него видел работу с библиотеками? Это логичнее сюда адресовать. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jul 12, 2011 18:32 Post subject: |
|
|
Rodny
Проверил. Не реализовано. Насчёт адресации не согласен. Файлы library-ms нужно бы открывать как папки, плагин сразу открывает их в проводнике. |
|
Back to top |
|
 |
ales128
Joined: 11 Jul 2011 Posts: 6
|
(Separately) Posted: Tue Jul 12, 2011 20:03 Post subject: |
|
|
Сделал такое решение:
Задаю внутреннюю ассоциацию TC
*.library-ms -- d:\Library-ms.vbs
Содержимое файла d:\Library-ms.vbs:
Code: | dim objArgs
dim arg1
Const ForReading = 1
Dim fso, f
dim pos1,pos2
dim dir
'===============
sub main
Set objArgs = WScript.Arguments ' Создаем объект WshArguments
For Each Arg In objArgs
s=s & Arg & " " ' Формируем строки со значениями аргументов
arg1=Arg
Next
if s="" then
msgbox("Ошибка аргумента")
exit sub
end if
on error resume next
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(s, ForReading)
TextFile = f.ReadAll
if err.number <> 0 then
msgbox("Ошибка чтения файла")
exit sub
end if
on error goto 0
pos1=instr(TextFile,"<url>")+len("<url>")
pos2=instr(TextFile,"</url>")
if pos2 >= pos1 then
dir=mid(TextFile,pos1,pos2-pos1)
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run """C:\Program Files (x86)\totalcmd\TOTALCMD.EXE"" " & dir
rem msgbox(dir)
else
msgbox("Ошибка в файле библиотеки:" + TextFile)
exit sub
end if
end sub
'===============
Call Main |
По нажатию Enter на файле библиотеки открывается новый TC с нужной директорией
Код сырой, набросал лишь бы работало
Но идея стоящая (себя не похвалишь - никто не похвалит) |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jul 12, 2011 21:46 Post subject: |
|
|
ales128
Это не откроет стандартные библиотеки с GUID. Пробовал с соответствующими разделами в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\ и TCShellTC - результат тот же.
ales128 wrote: | открывается новый TC | Зачем новый?
Code: | Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run """C:\Program Files (x86)\totalcmd\TOTALCMD.EXE"" " & dir | поменять на Code: | CreateObject("WScript.Shell").Exec("%COMMANDER_PATH%\Totalcmd.exe /O /S /L=""" & dir & """") |
|
|
Back to top |
|
 |
ales128
Joined: 11 Jul 2011 Posts: 6
|
(Separately) Posted: Tue Jul 12, 2011 22:02 Post subject: |
|
|
Писал второпях... лишь бы заработало
Спасибо за правки и улучшения
Quote: | Это не откроет стандартные библиотеки |
Так их TC прекрасно открывает через Рабочий стол
или можно через путь: c:\Users\[My user]\AppData\Roaming\Microsoft\Windows\Libraries\[My library].library-ms |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jul 12, 2011 22:08 Post subject: |
|
|
ales128 wrote: | или можно через путь | Так о нём то и шла речь. Не откроет.
Лично мне от скрипта хватило:
Code: | ' Открыть файл library-ms
' Во внутренних ассоциациях TC назначить скрипт с аргументом "%1" на *.library-ms
'===========================================================
F = CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1).ReadAll
pos1 = InStr(F,"<url>")+len("<url>")
pos2 = InStr(F,"</url>")
if pos2 >= pos1 Then Dir = mid(F,pos1,pos2-pos1)
CreateObject("WScript.Shell").Exec"%COMMANDER_PATH%\Totalcmd.exe /O /S /L=""" & Dir & """" |
Last edited by Flasher on Mon Jul 18, 2011 03:05; edited 1 time in total |
|
Back to top |
|
 |
ales128
Joined: 11 Jul 2011 Posts: 6
|
(Separately) Posted: Tue Jul 12, 2011 22:35 Post subject: |
|
|
В этом случае нужно лезть в реестр и выковыривать оттуда правильный путь, на который указывает библиотека
Еще проблема в том, что в теге <URL> путь к папкам для глаз человека и он не гарантированно совпадет с путем в теге <serialized>, в котором закодирован "истинный" путь
Самое правильное - через IShellLibrary API, но это уже не через VBScript |
|
Back to top |
|
 |
|