Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

TC не понимает библиотеки Windows 7

 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
ales128



Joined: 11 Jul 2011
Posts: 6

Post (Separately) Posted: Mon Jul 11, 2011 08:56    Post subject: TC не понимает библиотеки Windows 7 Reply with quote

Когда я создаю библиотеку Win 7 (virtual folder), проводник ее отлично понимает, но вот TC пытается открыть ее как файл с неизвестным расширением
Sad
Помогите, кто знает!
Back to top
View user's profile Send private message
Rodny



Joined: 24 Jan 2007
Posts: 949
Location: Могилёв, Беларусь

Post (Separately) Posted: Tue Jul 12, 2011 10:38    Post subject: Reply with quote

Как ты её открываешь? В библиотеки нужно входить через Рабочий стол, команда cm_OpenDesktop.
Back to top
View user's profile Send private message
ales128



Joined: 11 Jul 2011
Posts: 6

Post (Separately) Posted: Tue Jul 12, 2011 13:24    Post subject: Reply with quote

Настроил значек с командой cm_OpenDesktop. На рабочем столе отображаются библиотеки и в них можно войти

Но моя цель создать библиотеку не в стандартном расположении библиотек - c:\Users\[My user]\AppData\Roaming\Microsoft\Windows\Libraries , а в произвольной директории и чтобы входить в нее можно было, как в проводнике - по Enter или DoubleClick
Back to top
View user's profile Send private message
Rodny



Joined: 24 Jan 2007
Posts: 949
Location: Могилёв, Беларусь

Post (Separately) Posted: Tue Jul 12, 2011 13:48    Post subject: Reply with quote

ales128
Я не понимаю, что значит "создать библиотеку не в стандартном расположении библиотек... а в произвольной директории". При добавлении папок в существующие библиотеки, при создании новых библиотек все они доступны через рабочий стол.
Рассказывай по шагам, что делать.
Back to top
View user's profile Send private message
ales128



Joined: 11 Jul 2011
Posts: 6

Post (Separately) Posted: Tue Jul 12, 2011 14:24    Post subject: Reply with quote

Есть разные варианты, вплоть до того что вручную написать 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
View user's profile Send private message
Rodny



Joined: 24 Jan 2007
Posts: 949
Location: Могилёв, Беларусь

Post (Separately) Posted: Tue Jul 12, 2011 17:45    Post subject: Reply with quote

ales128
Ясно. Не знаю, как устроен механизм виртуальных папок TC, но сомневаюсь, что он обращается с библиотеками напрямую. Думаю, что Гислер просто не предусмотрел возможности работать с этими файлами непосредственно.
Подожди, возможно местные плагинописатели посодействуют. Или сразу иди на оф. форум с запросом.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jul 12, 2011 17:49    Post subject: Reply with quote

Rodny wrote:
возможно местные плагинописатели посодействуют
Случаем, уже не посодействовали?
Back to top
View user's profile Send private message
Rodny



Joined: 24 Jan 2007
Posts: 949
Location: Могилёв, Беларусь

Post (Separately) Posted: Tue Jul 12, 2011 17:59    Post subject: Reply with quote

Flasher
А где ты у него видел работу с библиотеками? Shocked Это логичнее сюда адресовать.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jul 12, 2011 18:32    Post subject: Reply with quote

Rodny
Проверил. Не реализовано. Насчёт адресации не согласен. Файлы library-ms нужно бы открывать как папки, плагин сразу открывает их в проводнике.
Back to top
View user's profile Send private message
ales128



Joined: 11 Jul 2011
Posts: 6

Post (Separately) Posted: Tue Jul 12, 2011 20:03    Post subject: Reply with quote

Сделал такое решение:

Задаю внутреннюю ассоциацию 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 с нужной директорией

Код сырой, набросал лишь бы работало
Но идея стоящая Smile (себя не похвалишь - никто не похвалит)
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jul 12, 2011 21:46    Post subject: Reply with quote

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
View user's profile Send private message
ales128



Joined: 11 Jul 2011
Posts: 6

Post (Separately) Posted: Tue Jul 12, 2011 22:02    Post subject: Reply with quote

Quote:
Зачем новый?

Писал второпях... лишь бы заработало
Спасибо за правки и улучшения Smile

Quote:
Это не откроет стандартные библиотеки

Так их TC прекрасно открывает через Рабочий стол
или можно через путь: c:\Users\[My user]\AppData\Roaming\Microsoft\Windows\Libraries\[My library].library-ms
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jul 12, 2011 22:08    Post subject: Reply with quote

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
View user's profile Send private message
ales128



Joined: 11 Jul 2011
Posts: 6

Post (Separately) Posted: Tue Jul 12, 2011 22:35    Post subject: Reply with quote

В этом случае нужно лезть в реестр и выковыривать оттуда правильный путь, на который указывает библиотека

Еще проблема в том, что в теге <URL> путь к папкам для глаз человека и он не гарантированно совпадет с путем в теге <serialized>, в котором закодирован "истинный" путь

Самое правильное - через IShellLibrary API, но это уже не через VBScript
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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