PDA

Показать полную графическую версию : Добавление пользовательских пунктов в контекстное меню (файлы, папки и т.д.)


Страниц : 1 2 3 [4] 5 6 7 8

SOLON7
17-04-2009, 08:35
О чем собственно речь идет ?? Что мутим ???

R.M.L
17-04-2009, 18:03
SOLON7, разбираемся с контекстном меню =)

Space-06
21-04-2009, 07:59
О чем собственно речь идет ?? Что мутим ??? »

добавление пользовательских меню осуществимо от части с помощью COM, так вот собственно и вопрос - возможно ли сделать библиотечку - чтоб перед регистрацией ее в системе прописать в ини файле необходимые под нужды пункты меню и соответствующие им запускаемые файлы?

R.M.L
02-05-2009, 13:48
Space-06, библиотечка и так регистрируется в системе через regsvr32,а прописывать пункты это уже надо делать в самой Дллки..Вы своим этаким алгоритмом усложняете процесс запроса на дллку.

SOLON7
02-05-2009, 16:06
Вы можете использовать программу.. Блин не помню как она называлась.
Толи Fexplorermenu толи Context menu !!
Спросите у ШУМ. Он сначала заморачавался с этим. Потом все таки использовал мои ДЛЛ !!

Если конкретно мне распишите мне задачу. До винтиков и болтиков. То могу помочь.
А то непонятно что кокретно нужно !!!

R.M.L
05-05-2009, 00:38
SOLON7, вот тебе домашнее задание для размышлений.Сделать в контекстном меню проводника (не в контекстном меню Мой компьютер) функции "Скрыть/показать скрытые файлы,сркыть показать расширение файлов,открыть закрыть СДРОМ,открыть меню Выполнить или например перезагрузить ,выключить и т.д. Думаю для тебя это не составит никакого труда,мы то тебя знаем :)

SOLON7
05-05-2009, 03:07
Сделать в контекстном меню проводника »
Покажите на скрине что вы конктрено хотите !!
Просто есть разные варианты контесктных меню.
Есть меню дисков,
есть меню файлов *.*
есть меню *.bmp
есть меню папок !!

В общем немного поконкретнее !!

Space-06
05-05-2009, 10:08
Покажите на скрине что вы конктрено хотите !!
Просто есть разные варианты контесктных меню.
Есть меню дисков,
есть меню файлов *.*
есть меню *.bmp
есть меню папок !!
В общем немного поконкретнее !! »

а если да же для этих, перечисленных тобой пунктов - сделать универсально:
Библиотечка (СОМ или ActiveX ) CLSID {XXXXX-XXXXX-XXXXX-XXXXX-XXXXX}
будет читать параметры из ini файла в котором будет прописано какое приложение и с какими параметрами запускать, например:

если щелкаем ПКМ по рабочему столу то в Контекстном меню появляются подменю: Открыть/закрыть CD
Открыть "Выполнить" - "Выключить/Перезагрузить Комп

если щелкаем по Файлам (*.*) - появляется пользовательское меню - которое можно прописать в Ини ( будь то запуск программы для приложения и название меню....

SOLON7
05-05-2009, 11:35
На данный момент я знаю как добавлять пункты в папки и файлы (кодом дельфи).
Остальное пока не рассматривалось.

SOLON7
06-05-2009, 12:24
R.M.L, Ну так все таки покажине на срине как бы хотел видеть интеграцию в оболочку !!
А то не совсем понятно что мего именно ты хочешь ???
Для более глубоко понимая моего вопроса ознакомьтесь с
Пакетом Distr Tools
http://forum.oszone.net/thread-132026-13.html

Мы его делали с Шумом !!!

Stayshayder
07-05-2009, 00:52
Особо не вчитывался в тему, но как я понял здесь разбираемся с тем, как в контекстное меню добавить свои пункты. Ну что ж, попробую помочь Вам в решении данного вопроса :)

Итак, в данном посте рассмотрим решение следующих вопросов:
1) Как добавлять свои пункты в контекстное меню файлов определённого типа (например txt)?
2) Как добавить свои пункты в контекстное меню абсолютно всех файлов?
3) Как добавить свои пункты в контекстное меню корзины?
4) Как создать свой тип файлов и добавить в его контекстное меню определённые пункты и выбрать пункт, который будет использоваться по умолчанию?
5) Как для нескольких типов файлов быстро создать одинаковые пункты в контекстном меню и также быстро изменить их?
6) Как добавлять свои пункты в контекстное меню Мой компьютер?
7) Как добавить свои пункты в контекстное меню только папок?
8) А есть ли программы, для редактирования контекстного меню, и какие?


1) Как добавлять свои пункты в контекстное меню файлов определённого типа (например txt);

То, что будет у вас отображаться в контекстном меню, как известно хранится в реестре. Редактирование которого мы сейчас и займёмся.

Давайте для примера создадим пункт "Мой пункт" в контекстном меню обычного .txt файла.

1) Первым делом нам надо зайти в редактор реестра (команда regedit).

2) Все зарегистрированные расширения хранятся в разделе HKEY_CLASSES_ROOT. Переходим в него (двойным кликом, или просто нажимаем [+] рядом с этим разделом).

3) Прокручиваем раскрывшийся список до тех пор, пока не увидим раздел "txtfile" (естественно без кавычек. Почему именно txtfile, а не .txt объясню Вам чуть позже). Во время поиска этого раздела обращаем внимание на раздел "*", который в раскрывшимся списке находится в самом верху (он нам позже ещё понадобится. Некоторые может сразу догадаются для какой цели он нам нужен будет).

4) После того, как вы найдёте раздел "txtfile" (он будет практически в самом низу) нажимаем на [+] рядом с этим разделом. В раскрывшемся списке вы увидите разделы "DefaultIcon" (в данном разделе хранится путь к иконке, которая будет отображаться у файлов .txt) и раздел "shell", в котором как раз таки и хранится то, что будет отображаться в контекстном меню. Раскрываем его. В данном разделе уже есть подразделы "open", "print" и "printto" (обращаем внимание на подразделы этих разделов). Я думаю назначение этих пунктов вам понятно по их названию.

5) Создаём в разделе "txtfile\shell" новый раздел. Для этого надо кликнуть правой кнопкой мыши по разделу shell и выбрать "Создать/Раздел" и вводим название "Мой пункт" (только без кавычек).

Теперь можете создать .txt файл или кликнуть правой кнопкой мыши по уже существующему .txt файлу и с изумлением обнаружить, что пункта "Мой пункт" в контекстном меню нету. А нету его там потому, что Вы что-то не так сделали. У тех, кто всё делал как описано выше этот пункт в контекстном меню есть :) Но при выборе этого пункта появляется сообщение "Приложение, выполняющее эту операцию, указанному файлу не сопоставлено. Произведите сопоставление с помощью панели управления "Свойства папки"."

6) Дак как же нам всё это починить, и сделать так, чтоб при выборе этого пункта запускалось приложение? Отвечаю: Для этого в нашем недавно созданном разделе надо создать ещё один подраздел, в котором будет храниться команда, которая будет выполняться при выборе пункта "Мой пункт". Подраздел этот называется "command". Создаём его.

7) Кликаем по вновь созданному пункту и смотрим на правую половину редактора реестра, в которой отображаются параметры и их значения. Т.к. мы для нашего нового пункта в контекстном меню ещё не назначили действие, там у нас в параметре "(По умолчанию)" написано "(Значение не присвоено)". Давайте присвоим значение этому параметру. Для этого 2 раза кликаем там, где написано "(По умолчанию)". После этого откроется окно для ввода или изменения параметров. Вводим в него путь до приложения, которое будет выполняться при клике по пункту "Мой пункт". Я в качестве примера просто указал cmd.

8) Ну вот и всё. Теперь после выбора в контекстном меню пункта "Мой пункт" запустится приложение, которое мы только что указали. У меня это "Командная строка".

В виде твика реестра это выглядит следующим образом:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\txtfile\shell\Мой пункт\command]
@="cmd"


2) Как добавить свои пункты в контекстное меню абсолютно всех файлов?

На данном этапе вспоминаем про раздел "*", про который я уже говорил, и обращал на него ваше внимание. Дак вот те, кто подумал что в данном разделе хранятся пункты, которые отображаются в контекстном меню абсолютно всех файлов и папок, были правы.

1) Переходим в данный раздел (HKEY_CLASSES_ROOT\*), нажимаем на [+] рядом с этим разделом и тут же удивляемся, что в данной ветки реестра нету раздела "shell"...

2) Создаём отсутствующий раздел "shell" и действуем также, как вы делали при добавлении пункта "Мой пункт". Т.е.

3) Создаём в разделе "shell" новый раздел (который и будет отображаться в контекстном меню всех файлов)

4) Создаём в разделе "shell" подраздел "command"

5) Настраиваем значение параметра "(По умолчанию)"

6) Радуемся тому, что всё получилось :) А если не получилось, тогда ищем свою ошибку и исправляем её.

В виде твика реестра у меня получилось следующее:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Этот пункт везде!\Command]
@="cmd"


3) Как добавить свои пункты в контекстное меню корзины?

1) Открываем раздел HKEY_CLASSES_ROOT

2) Переходим в подраздел CLSID

3) Раскрываем раздел {645FF040-5081-101B-9F08-00AA002F954E}

4) Создаём в разделе {645FF040-5081-101B-9F08-00AA002F954E} подраздел "shell"

5) Действуем точно также, как делали, когда добавляли свои пункты в контекстное меню всех файлов.

Твик реестра, который получился у меня:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\Shell\Новый пункт в меню корзины\Command]
@="cmd"


4) Как создать свой тип файлов и добавить в его контекстное меню определённые пункты и выбрать пункт, который будет использоваться по умолчанию?

Как вы уже догадались, в ветке реестра HKEY_CLASSES_ROOT, которую мы и изменяли, также хранятся и значения расширений файлов.

1) Переходим в ветку HKEY_CLASSES_ROOT

2) Кликаем по ней правой кнопкой мыши и создаём новый раздел. Я назвал его ".OSzone"

3) Создаём в нём подраздел "shell"

4) В подразделе "shell" создаём ещё один раздел, но уже с названием "Open" (после создания раздела "Open" у файлов с расширением .OSzone появится пункт "Открыть", который и будет пунктом по умолчанию).

5) В разделе "Open" создаём ещё один подраздел, с названием "shell" и подраздел в подразделе "shell" с названием "command" (в общем, всё как всегда)

6) Изменяем параметр "(По умолчанию)"

7) В ветке "HKEY_CLASSES_ROOT\.OSzone\shell" создаём ещё один раздел, который будет дополнительным пунктом в контекстном меню .OSzone файлов. Я его так и оставил с названием "Новый раздел #1"

8) Создаём для пункта "Новый раздел #1" подраздел "command"

9) В подразделе "command" в разделе "Новый раздел #1" изменяем параметр "(По умолчанию)"

После всего этого у меня получился следующий твик реестра:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.OSzone]

[HKEY_CLASSES_ROOT\.OSzone\Shell]

[HKEY_CLASSES_ROOT\.OSzone\Shell\Open]
@=""

[HKEY_CLASSES_ROOT\.OSzone\Shell\Open\Command]
@="cmd"

[HKEY_CLASSES_ROOT\.OSzone\Shell\Новый раздел #1]
@=""

[HKEY_CLASSES_ROOT\.OSzone\Shell\Новый раздел #1\Command]
@="regedit"


5) Как для нескольких типов файлов быстро создать одинаковые пункты в контекстном меню и также быстро изменить их?

Итак, давайте в этом шаге создадим одинаковое контекстное меню для .iso и .img файлов.

Для начала вспомним, как мы создавали контекстное меню для .txt файлов и подумаем над тем, почему контекстное меню .txt файлов изменяется в разделе "txtfile", а не в ".txt".

Для того, чтобы получить ответ на этот вопрос достаточно внимательно посмотреть на раздел ".txt". А конкретно, на то, что у этого раздела указано в параметре "(По умолчанию)". Для этого раскрываем ветку реестра HKEY_CLASSES_ROOT, кликаем по разделу ".txt" и видим, что в параметре "(По умолчанию)" стоит значение txtfile. Т.е. получается, что можно просто создавать эдакие ссылки на другие разделы реестра, в которых и хранятся элементы контекстного меню. Давайте создадим такие ссылки для .iso и .img файлов, в которых будут элементы из созданного нами типа файлов ".OSzone". Думаю вы уже и сами разберётесь как это сделать. Подскажу лишь, что для этого просто в параметре "(По умолчанию)" у разделов .iso и .img нужно написать ".OSzone" (без кавычек).

Твик реестра для данной манипуляции выглядит следующим образом:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.iso]
@=".OSzone"

[HKEY_CLASSES_ROOT\.img]
@=".OSzone"


6) Как добавлять свои пункты в контекстное меню Мой компьютер?

Здесь первым делом смотрим на вот этот (http://forum.oszone.net/post-1071045-2.html) пост, который нам написал Drongo.

После внимательного просмотра этого поста можно понять, что все пункты контекстного меню Мой компьютер хранится в разделе "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell". Вот его то и надо изменять для редактирования данного контекстного меню. Думаю здесь вы уже сами разберётесь как там что изменять, тем более, Вы это уже проделывали не один раз, за то время, пока читали данный пост и пробовали всё это применить на деле.

7) Как добавить свои пункты в контекстное меню только папок?

Как это делается нам уже продемонстрировал morkva в этом (http://forum.oszone.net/post-1078998-44.html) посте.
Мне остаётся лишь повторить, что контекстное меню папок хранится в ветке "HKEY_CLASSES_ROOT\Directory\Background\shell". Дальше Вы знаете что с этим делать ;)

8) А есть ли программы, для редактирования контекстного меню, и какие?

Да, есть. Некоторые из них нам уже указывали R.M.L в этом (http://forum.oszone.net/post-1073998-21.html) посте и Admiral в этом (http://forum.oszone.net/post-1076894-37.html) посте.

Я добавлю ещё несколько утилит, позволяющих изменять контекстное меню.

1) Open++ (http://dengdun.webs.com/) - Программа для создания произвольного контекстного меню. Подробнее о её возможностях можно посмотреть здесь (http://dengdun.webs.com/en/openxx.htm)

2) ContextEdit - редактор контекстного меню и Fast Explorer - менеджер контекстного меню. Обитают эти программы на этом (http://suchov.narod.ru/context.htm) сайте.

3) Context Menu Manager (http://www.cavu-software.com/Context%20Menu%20Manager/Overview.htm) - Программа позволяет быстро активировать и отключать пункты в контекстном меню.

4) 12Ghosts™ ShellX (http://12ghosts.com/ghosts/shellx.htm) - Добавляет в контекстное меню новые команды.

5) ShellToys XP (http://www.shelltoysxp.com/) - Программа добавляет в контекстное меню около 50 дополнительных команд, которые расширяют возможности управления файлами, папками, диалогами и окошками.

6) SendTo Magic (http://softsearch.ru/programs/58-895-sendto-magic-download.shtml) - Эта утилита добавляет к контекстному меню SendTo некоторые дополнительные возможности: копирование/перемещение файлов в папки, создание новых папок и т.п.

7) SendTo Commander (http://www.vasilios-free.gr/freesoft/sendto_commander.htm) - Как можно догадаться по названию, программа работает с контекстным меню "Отправить".

8) The Right click commander (http://softsearch.ru/programs/14-179-the-right-click-commander-download.shtml) - RCC интегрируется в Проводник, в качестве надстройки над ним. В контекстное меню добавляется содержимое папки "Мой компьютер". Диски, папки, файлы и операции с ними будут представлены в виде пунктов и подпунктов иерархического контекстного меню.

9) Mmm Free (http://hace-software.com/mmm.shtml) - Позволяет с легкостью управлять содержанием контекстных меню Explorer - можно скрыть, убрать или объединить любые пункты меню.

10) ContextMenu ControlFreak 1.01 - Очень многие программы имеют привычку добавлять в контекстное меню, появляющееся после щелчка правой кнопкой мыши, собственные пункты. Некоторые из этих пунктов оказываются полезными, но многими другими не приходится воспользоваться ни разу, и они лишь мешают. ContextMenu ControlFreak позволяет по своему усмотрению отредактировать контекстное меню, оставив в нем только действительно необходимое, причем проделывать это программа может с любым контекстным меню, где бы оно не находилось. Если все же вдруг возникнет необходимость в одном из "удаленных" пунктов, то добраться до него можно будет без труда - все они спрятаны в субменю (пункт Rarely used).Кстати, программа позволяет использовать ее в многопользовательском режиме - каждый из пользователей сможет настроить контекстные меню по своему собственному усмотрению.


Примечание:
В твиках реестра вместо [HKEY_CLASSES_ROOT\.OSzone\Shell\Новый раздел #1]
@=""
Можно указать [HKEY_CLASSES_ROOT\.OSzone\Shell\15]
@="Новый раздел #1"В контекстном меню это будет выглядеть одинакого. Т.е. можно создать подраздел с абсолютно любым названием, а в параметре "(По умолчанию)" указать название, которое будет отображаться.

Также довольно лёгкий способ изменения контекстного меню - это открыть любую папку, выбрать в меню "Сервис" пункт "Свойства папки...", перейти на вкладку "Типы файлов", выбрать там нужный тип файлов, нажать на кнопку "Дополнительно" и в открывшемся окне редактировать контекстное меню и иконку файлов. Если же Вам нужен будет твик ваших изменений, то я думаю если вы внимательно читали данный мануал, то Вы сможете легко его найти в реестре. Или просто нажимаем Ctrl+F и вводим например название любого созданного Вами пункта контекстного меню. После чего экспортируем раздел реестра.

PS: Надеюсь мануал всем прочитавшим его будет понятен :)
PPS: Пока всё это писал, нашёл на форуме тему Интерфейс - Настройка контекстного меню файлов/папок/дисков .:[все вопросы]:. (http://forum.oszone.net/thread-62252.html), в которой обсуждается тоже самое, но всё же напишу здесь, хотя надо бы наверно там.

mozgabyte
07-05-2009, 01:00
Stayshayder, ого, Спасибо! Это тянет на статью в учебник по Автоматической установке Windows :)

R.M.L
07-05-2009, 22:24
Stayshayder, спасибо

9119
12-07-2009, 18:18
Народ!подскажите пожалуйста.
Как добавить нужный пункт в контекстное меню "Создать".....???
Укажите просто на нужную ветку реестра.
А если конкретно то хочу добавить пункт создать батник..

Cibersoft Prolex
12-07-2009, 21:41
9119
Народ!подскажите пожалуйста.
Как добавить нужный пункт в контекстное меню "Создать".....???
Укажите просто на нужную ветку реестра.
А если конкретно то хочу добавить пункт создать батник.. »
Твики реестра Вы можете посмотреть в этой теме: Твики реестра (http://forum.oszone.net/thread-140910.html)

E-mpty
12-07-2009, 22:47
9119, Запусти этот файл (во вложении) и будет то что нужно...Кроме твика реестра,нужно еще создать батник(образец который будет создаватся из пункта создать) и поместить его в папку %windir%\SHELLNEW...
P.S.Пункт появится после нажатия правой клавиши мыши-обновить, на рабочем столе.

Habetdin
12-07-2009, 22:53
Кроме твика реестра,нужно еще создать батник(образец который будет создаватся из пункта создать) и поместить его в папку %windir%\SHELLNEW... »
Можно положить образец в %UserProfile%\Шаблоны

Как добавить нужный пункт в контекстное меню "Создать".....??? »
Ложим образец (Образец.расширение) в папку %UserProfile%\Шаблоны (можно распаковать svcpack-аддоном, как удобнее)
Применяем твик из myCustom
HKCR,".расширение\ShellNew","NullFile",0x0,"Образец.расширение"
Или .reg-файлом
[HKEY_CLASSES_ROOT\.расширение\ShellNew]
"NullFile"="Образец.расширение"
P.S.: не забываем менять .расширение и Образец.расширение

Peredreifus
20-07-2009, 16:20
morkva

Я немного переделал твой скрипт.
- Теперь reg файлы не нужны. И сам скрипт может лежать где угодно, не обязательно в System32
- Запись в реестр ведется для текущего юзера, ибо не всегда есть права админа
- Пункт меню добавляется только в контекстное меню открытой папки - так удобнее и логичнее, но в XP вроде не
работает. Там только по контекстному меню папки можно. Но я на Win 7 сижу. На висте тоже должно работать.
- Добавлена иконочка
Идея такая: Запускаем скрипт. Он смотрит, если ветка "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden" не существует, то создает ее, иначе удаляет. В реестр записывает путь к самому себе с параметром (любым, я выбрал "-argument"). Затем, когда пользователь кликает по нашему пункту меню, запускается скрипт, ему передается параметр, скрипт понимает, что если есть параметр, то надо не удалить раздел, а изменить запись в нем (извиняюсь за кривое объяснение)


Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
' Если скрипт запущен с каким-то параметром, то...
If WScript.Arguments.Count>0 Then
' Проверяем значение в реестре и в зависимости от него либо отображаем скрытые папки, либо наоборот убираем.
If WSHShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden") = 1 then
' Скрываем папки
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden", "0", "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "2", "REG_DWORD"
' Добавляем пункт в контекстное меню
' В поле command прописываем путь до текущего скрипта с параметром (не важно каким, главное, чтобы он был), чтобы..
' ..скрипт понял, что ему нужно не удалить ветку реестра, а изменить
WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden\", "Отображать скрытые", "REG_SZ"
WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden\command\", "WScript.exe """&WScript.ScriptFullName&""" -argument", "REG_SZ"
' Обновляем окно эксплорера, чтобы увидеть результат
WSHShell.SendKeys "{F5}"
Else
' Скрываем папки
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden", "1", "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "1", "REG_DWORD"
' Добавляем пункт в контекстное меню
WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden\", "Не отображать скрытые", "REG_SZ"
WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden\command\", "WScript.exe """&WScript.ScriptFullName&""" -argument", "REG_SZ"
' Обновляем окно эксплорера, чтобы увидеть результат
WSHShell.SendKeys "{F5}"
End If
Else
' Если запись в реестре есть, то удаляем наш раздел
If WSHShell.Run("cmd.exe /C REG QUERY ""HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden""", 0, True)=0 Then
WSHShell.Run "cmd /C REG DELETE ""HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden"" /f", 0
Else
' Иначе запускаем этот скрипт с параметром (какой параметр - значения не имеет, главное его наличие)
WSHShell.Run """"&WScript.ScriptFullName&""" -argument"
' И еще добавим иконочку для красоты
WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden\Icon", "%SystemRoot%\System32\shell32.dll,55", "REG_SZ"
End If
End if
Set WSHShell = Nothing
WScript.Quit(0)

Peredreifus
20-07-2009, 16:53
То же самое, только для расширений файлов (Скрыть/Показать)


Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
' Если скрипт запущен с каким-то параметром, то...
If WScript.Arguments.Count>0 Then
' Проверяем значение в реестре и в зависимости от него либо отображаем расширения, либо наоборот скрываем.
If WSHShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt") = 0 then
' Скрываем расширения
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt", "1", "REG_DWORD"
' Добавляем пункт в контекстное меню
' В поле command прописываем путь до текущего скрипта с параметром (не важно каким, главное, чтобы он был), чтобы..
' ..скрипт понял, что ему нужно не удалить ветку реестра, а изменить
WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt\", "Показать расширения", "REG_SZ"
WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt\command\", "WScript.exe """&WScript.ScriptFullName&""" -argument", "REG_SZ"
' Обновляем окно эксплорера, чтобы увидеть результат
WSHShell.SendKeys "{F5}"
Else
' Показываем расширения
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt", "0", "REG_DWORD"
' Добавляем пункт в контекстное меню
WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt\", "Скрыть расширения", "REG_SZ"
WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt\command\", "WScript.exe """&WScript.ScriptFullName&""" -argument", "REG_SZ"
' Обновляем окно эксплорера, чтобы увидеть результат
WSHShell.SendKeys "{F5}"
End If
Else
' Если запись в реестре есть, то удаляем наш раздел
If WSHShell.Run("cmd.exe /C REG QUERY ""HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt""", 0, True)=0 Then
WSHShell.Run "cmd /C REG DELETE ""HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt"" /f", 0
Else
' Иначе запускаем этот скрипт с параметром (какой параметр - значения не имеет, главное его наличие)
WSHShell.Run """"&WScript.ScriptFullName&""" -argument"
' И еще добавим иконочку для красоты
WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\HideFileExt\Icon", "%SystemRoot%\System32\shell32.dll,69", "REG_SZ"
End If
End if
Set WSHShell = Nothing
WScript.Quit(0)

Smarty
20-07-2009, 18:01
9119, По поводу меню ''Создать - BAT File''...
Чего городить огород? ''Создать - Текстовый файл'', далее пишешь в нём нужный код, сохраняешь и меняешь расширение на BAT или CMD. Или нужен новый файл уже с куском кода?




© OSzone.net 2001-2012