Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 2000/XP (http://forum.oszone.net/forumdisplay.php?f=6)
-   -   Создание объектов в "Мой компьютер" (http://forum.oszone.net/showthread.php?t=75025)

defrag 22-11-2006 15:41 515529

Создание объектов в "Мой компьютер"
 
Подскажите пожалуйста, как можно в папке "Мой компьютер" создать ссылку на собственный объект?
Ничего необчного не нужно, нужна просто ссылка на одну папку. И чтобы она таким образом была видна в древовидном меню "Проводника" наряду с логическими дисками и "Панелью управления".

Извиняюсь заранее, если подобные вопросы задаются каждый день, но поиском я ничего не нашел :(

Blast 22-11-2006 17:08 515569

Было где-то, но с разбегу и сам не нашел :)
Пробуем делать так:
1) создайте идентификатор своей папки в ветках HKEY_CLASSES_ROOT\CLSID и HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID такого же вида как там уже существуют, например {912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A} - здесь дайте волю фантазии, значение произвольное, а можете и этот взять.

2) В созданном подразделе создавайте строковый (REG_SZ) параметр по умолчанию со значением равным имени папки которое хотите чтоб отображалось:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}
Параметр: (По умолчанию)
Значение: Своя папка

3) Создайте в новом разделе подраздел DefaultIcon, а в нем строковый параметр со значением равным пути к *.ico файлу - файлу иконки папки:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}\DefaultIcon
Параметр: (По умолчанию)
Значение: c:\myicon.ico (например)

4) Затем еще подраздел InProcServer32 и в нем два также строковых параметра - по умолчанию и ThreadingModel, значение первого shell32.dll, значение второго Apartment:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}\InProcServer32
Параметр: (По умолчанию)
Значение: shell32.dll
Параметр: ThreadingModel
Значение: Apartment

5) Создайте подраздел Shell, в нем подраздел Open, а в этом Command, значение параметра по умолчанию = команда открытия вашей папки:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}\Shell\Open\Command
Параметр: (По умолчанию)
Значение: C:\Windows\explorer /n / root, C:\MyFolder
где C:\MyFolder - путь к вашей папке

6) После этого еще подраздел ShellEx, в нем PropertySheetHandler, а в нем свой идентификатор, то есть {912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}
здесь параметры вроде как не нужны:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}\ShellEx\PropertySheetHandler\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}

7) Еще один подраздел: ShellFolder, а в нем двоичный параметр (REG_BINARY) Attributes:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}\ShellFolder
Параметр: Attributes
Значение: hex:00,00,00,00

8) Теперь разместим папку в Моем компьютере и если надо на рабочем столе:
В ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\
создайте подраздел со своим идентификатором {912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A} - это для отображения на рабочем столе

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A} - для отображения в Моем компьютере

Вроде все, должно работать

defrag 22-11-2006 21:12 515634

Огромное спасибо! В общих чертах понятно.

Получилось, но не совсем то, что мне хотелось...
Нужно, чтобы папка открывалась в текущем окне, а не новом (как при клике на локальных дисках), а также, чтобы эта папка была видна в левой древовидной панели, которая появляется после нажатия кнопки "Папки" и была раскрываемая (ну т.е. опять же как любой локальный диск).

Чтобы в этом списке папка появилась, я добился, изменив Attributes в ShellFolder на hex:00,00,04,f0 (подсмотрел у других папок), но проблема в том, что эта папка там только присутствует, но ее нельзя выбрать или "развернуть" в виде дерева...
Помогите пожалуйста и с этим, если возможно! :)

Или хотя бы накормите полезными линками, чтобы умнее стал (а то навскидку Гугл много воды навыдавал, среди которой не смог отыскать то, что мне нужно)...

Спасибо заранее :)

Blast 23-11-2006 10:53 515846

defrag
Боюсь, что больше ничем не смогу вас порадовать, по крайней мере мне не удалось добиться то чего вы хотите экспериментами...

defrag 23-11-2006 11:27 515866

Blast, спасибо и на этом!


Время: 01:32.

Время: 01:32.
© OSzone.net 2001-