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 

Свои иконки у папок
Goto page 1, 2, 3, 4, 5, 6  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Zorroz



Joined: 16 Dec 2004
Posts: 308
Location: Россия, Иркутская обл., г. Ангарск

Post (Separately) Posted: Mon Apr 24, 2006 03:55    Post subject: Свои иконки у папок Reply with quote

2All
В папке «c:\Documents and Settings\Имя_Профиля\» есть директории(Recent и Избранное) у которых свои иконки. Например у избранного иконка в виде звездочки. В нутри папки находиться файл «Desktop.ini» следующего содержания:
Code:

[.ShellClassInfo]
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-173
LocalizedResourceName=@shell32.dll,-12693

Заставить изменить иконку у другой папки путем копирования этого файла не получается. Нужно что-то сделать еще? Или у произвольных папок нельзя менять иконку.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Apr 24, 2006 10:25    Post subject: Reply with quote

Надо еще установить у папки атрибут "Системный" или "Только для чтения".
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Zorroz



Joined: 16 Dec 2004
Posts: 308
Location: Россия, Иркутская обл., г. Ангарск

Post (Separately) Posted: Mon Apr 24, 2006 11:24    Post subject: Reply with quote

2Batya
Атрибут системный не подходит так как ТС скрывает скрытые и системные файлы вместе => папка будет скрыта.
А что значит атрибут только для чтения для папки. Если поставить такой атрибут для файла то в него нельзя будет писать, только читать. Но в такую папку можно писать/записывать, какой смысл тогда в этом параметре для папки.
_________________
Когда ангелу обрезают крылья, он учится летать на метле...
Back to top
View user's profile Send private message
Zorroz



Joined: 16 Dec 2004
Posts: 308
Location: Россия, Иркутская обл., г. Ангарск

Post (Separately) Posted: Mon Apr 24, 2006 11:55    Post subject: Reply with quote

А так оказывается прикольно иметь свои иконки у папок.
Немного разобрался в данном коде.
Code:

[.ShellClassInfo]
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-173
LocalizedResourceName=@shell32.dll,-12693


IconFile= путь до того места где храниться иконка, может быть ехе, ico, icl.
IconIndex=- номер иконки. Но вот номер иконки не соответствует номеру значка, который показывается при настройке кнопки в панели инструментов.
А вод что такое LocalizedResourceName=@shell32.dll,-12693 я не знаю. Но лучше эту строчку удалить. Wink
_________________
Когда ангелу обрезают крылья, он учится летать на метле...
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Apr 24, 2006 12:06    Post subject: Reply with quote

Quote:
А что значит атрибут только для чтения для папки

Не парься. Установи ("Файлы - Изменить атрибуты - [V] Только для чтения") и будет тебе счастье! Smile
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Apr 24, 2006 13:58    Post subject: Reply with quote

LocKtaR-o-DarK дал идею:
Ставим курсор на файл с иконкой, нажимаем кнопку, и создается Desktop.ini.

Вот что получилось:
Code:
'============================
' Создание файла Desktop.ini

' Параметры вызова из TC:
' "%P" "%N"
'============================

Dim FSO, TargetDir, IconFile, FileName, oDir, Attr, oFile
Set FSO = CreateObject("Scripting.FileSystemObject")

TargetDir = WScript.Arguments(0)
IconFile  = WScript.Arguments(1)
FileName  = "Desktop.ini"

' Установим для папки атрибут "Только чтение"
Attr = 1
Set oDir  = FSO.GetFolder(TargetDir)
oDir.Attributes = oDir.Attributes or Attr

'Создадим Desktop.ini
If not FSO.FileExists(TargetDir & FileName) Then
  Set oFile  = FSO.CreateTextFile(TargetDir & FileName)
  oFile.WriteLine "[.ShellClassInfo]"
  oFile.WriteLine "IconFile=" & IconFile
  oFile.WriteLine "IconIndex=0"
  oFile.Close
  ' Установим для файла атрибуты "Скрытый", "Системный", "Архивный"
  Attr = 38
  Set oFile = FSO.GetFile(TargetDir & FileName)
  oFile.Attributes = oFile.Attributes or Attr
End If

Set FSO   = Nothing
Set oDir  = Nothing
Set oFile = Nothing
WScript.Quit


ЗЫ. Для тех, кто еще не в курсе Wink - это файл *.vbs. Вешать на кнопку или в меню "Запуск".
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Mon Apr 24, 2006 14:55    Post subject: Reply with quote

2Batya
И что теперь, в каждой папке, к которой хочешь присобачить иконку, эту же иконку и хранить? Я предпочитаю их из других файлов выдирать по надобности (хотя может быть медленно).
2Zorroz
Quote:
А вод что такое LocalizedResourceName=@shell32.dll,-12693 я не знаю.

А разве имя переменной не мнемонично? Ты смотришь на системную папку=>она (почти) всегда существует, но на разных виндах по-разному называется=>LocalizedResourceName - это и есть её локализованное название.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Apr 24, 2006 15:14    Post subject: Reply with quote

funduk
Никто не мешает тебе потом поменять Desktop.ini. Здесь рассматривается случай, когда файл с иконкой уже лежит в папке. Типичный случай - папки внутри "Program Files" - иконку берем из exe-шника.
Предложи свой вариант, как должен работать скрипт, я сделаю.
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Mon Apr 24, 2006 17:27    Post subject: Reply with quote

Мне-то скрипт не нужен - у меня твикер есть. Я иконки у папок не каждый день меняю.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Apr 24, 2006 17:39    Post subject: Reply with quote

funduk
Quote:
Мне-то скрипт не нужен

Ну, раз не нужен, зачем же тогда придираться? Вот если ты можешь предложить хорошую идею, как бы должен работать скрипт, тогда я весь внимание.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Apr 24, 2006 18:13    Post subject: Reply with quote

Немного изменил скрипт. Теперь его также можно запускать с параметрами %P%N %T%M. В этом случае для папки, на которой стоит курсор, будет создан Desktop.ini с указанием на файл иконок, который является текущим на противоположной панели:
Code:
'============================
' Создание файла Desktop.ini

' Параметры вызова из TC:
' "%P" "%N"
' или:
' %P%N %T%M
'============================

Dim FSO, TargetDir, IconFile, FileName, oDir, Attr, oFile, MB
Set FSO = CreateObject("Scripting.FileSystemObject")

TargetDir = WScript.Arguments(0)
IconFile  = WScript.Arguments(1)
FileName  = "Desktop.ini"

If FSO.FolderExists(TargetDir)Then
  If Right(TargetDir, 1) <> "\" Then
    TargetDir = TargetDir & "\"
  End If
Else
  MB = MsgBox("Не задано имя папки!", vbOKOnly + vbExclamation, "Создание Desktop.ini")
  WScript.Quit
End If
' Установим для папки атрибут "Только чтение"
Attr = 1
Set oDir  = FSO.GetFolder(TargetDir)
oDir.Attributes = oDir.Attributes or Attr

'Создадим Desktop.ini
If not FSO.FileExists(TargetDir & FileName) Then
  Set oFile  = FSO.CreateTextFile(TargetDir & FileName)
  oFile.WriteLine "[.ShellClassInfo]"
  oFile.WriteLine "IconFile=" & IconFile
  oFile.WriteLine "IconIndex=0"
  oFile.Close
  ' Установим для файла атрибуты "Скрытый", "Системный", "Архивный"
  Attr = 38
  Set oFile = FSO.GetFile(TargetDir & FileName)
  oFile.Attributes = oFile.Attributes or Attr
End If

Set FSO   = Nothing
Set oDir  = Nothing
Set oFile = Nothing
WScript.Quit


Last edited by Batya on Wed May 17, 2006 13:25; edited 1 time in total
Back to top
View user's profile Send private message
Zorroz



Joined: 16 Dec 2004
Posts: 308
Location: Россия, Иркутская обл., г. Ангарск

Post (Separately) Posted: Mon Apr 24, 2006 18:20    Post subject: Reply with quote

2Batya
Отличный скрипт.
_________________
Когда ангелу обрезают крылья, он учится летать на метле...
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Mon Apr 24, 2006 18:59    Post subject: Reply with quote

Вот теперь молодца!
Совершенно не обязательно предлагать свои идеи - может быть, у тебя самого есть свободное время, чтобы довести свой скрипт до состояния user friendly Wink
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Tue Apr 25, 2006 10:05    Post subject: Reply with quote

[offtop]
funduk
Я бы не сказал, что у меня "есть свободное время", просто пытаюсь помочь другим. А необоснованные претензии меня выводят из себя. Пожалуйста, следующий раз, если не можешь сказать чего-нибудь продуктивного (конкректное замечание или предложение), лучше не говори ничего.
[/offtop]
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Wed Apr 26, 2006 11:54    Post subject: Reply with quote

[offtop]
Quote:
Я предпочитаю их из других файлов выдирать по надобности (хотя может быть медленно).

А разве это не выглядело как предложение? Ну хоть чуть-чуть похоже? Да и в результате ты реализовал именно это. А если ты это реализовал, значит не счёл мою "претензию" необоснованной.
Так что я тебя не совсем понимаю.
[/offtop]
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3, 4, 5, 6  Next
Page 1 of 6

 
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