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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   [решено] Добавление пункта меню к типу файла (http://forum.oszone.net/showthread.php?t=175737)

Tosyk 15-05-2010 13:34 1413816

Добавление пункта меню к типу файла
 
Постоянно нужно конвертировать картинки (TGA, JPG, BMP, PNG и др.) в формат DDS.

Для этого пользуюсь февральской сборкой DirectX SDK 2010 года, в нём есть чудесная утилита texconv.exe. После установки SDK в контекстном меню некоторых (TGA, JPG, BMP, PNG и др.) файлов появляется пункт "Convert to file format...":

http://s50.radikal.ru/i128/1005/62/8f7213b3edeb.jpg

По нажатию на него открывается окно с настройками для сохранения DDS (как раз тот texconv.exe):

http://s001.radikal.ru/i194/1005/69/43f9be5029e5.jpg

После нажатия на OK рядом с исходными файлами появляются DDS-аналоги. Если файлов выделено несколько, то пункт меню "Convert to file format..." всё равно активен.

Мне нужно сделать пункты меню для быстрого конвертирования, я их сделал для примера для TGA:

http://s003.radikal.ru/i204/1005/c4/cfdc2cc30bb4.jpg

следующим образом, добавил в реестр:

Код:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\IrfanView.tga]
@="IrfanView TGA File"

[HKEY_CLASSES_ROOT\IrfanView.tga\DefaultIcon]
@="C:\\Program Files (x86)\\IrfanView\\i_view32.exe,0"

[HKEY_CLASSES_ROOT\IrfanView.tga\shell]
@="open"

[HKEY_CLASSES_ROOT\IrfanView.tga\shell\convert_to_dxt1]
@="Конвертировать в DXT1"
"Icon"="\"C:\\Program Files (x86)\\Microsoft DirectX SDK (February 2010)\\Utilities\\bin\\x64\\texconv.exe\", 0"

[HKEY_CLASSES_ROOT\IrfanView.tga\shell\convert_to_dxt1\command]
@="\"C:\\Program Files (x86)\\Microsoft DirectX SDK (February 2010)\\Utilities\\bin\\x64\\texconv.exe\" -d 1 -m 1 -if TRIANGLE -f DXT1 \"%1\""

[HKEY_CLASSES_ROOT\IrfanView.tga\shell\convert_to_dxt5]
@="Конвертировать в DXT5"
"Icon"="\"C:\\Program Files (x86)\\Microsoft DirectX SDK (February 2010)\\Utilities\\bin\\x64\\texconv.exe\", 0"

[HKEY_CLASSES_ROOT\IrfanView.tga\shell\convert_to_dxt5\command]
@="\"C:\\Program Files (x86)\\Microsoft DirectX SDK (February 2010)\\Utilities\\bin\\x64\\texconv.exe\" -d 1 -m 1 -if TRIANGLE -f DXT5 \"%1\""

[HKEY_CLASSES_ROOT\IrfanView.tga\shell\open]

[HKEY_CLASSES_ROOT\IrfanView.tga\shell\open\command]
@="\"C:\\Program Files (x86)\\IrfanView\\i_view32.exe\" \"%1\""

[HKEY_CLASSES_ROOT\IrfanView.tga\ShellEx]

[HKEY_CLASSES_ROOT\IrfanView.tga\ShellEx\ContextMenuHandlers]

[HKEY_CLASSES_ROOT\IrfanView.tga\ShellEx\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

[HKEY_CLASSES_ROOT\IrfanView.tga\ShellEx\{00021500-0000-0000-C000-000000000046}]
@="{8938a035-768d-40c5-9560-bb901087e2af}"

[HKEY_CLASSES_ROOT\IrfanView.tga\ShellEx\{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}]
@="{8938a035-768d-40c5-9560-bb901087e2af}"

в реестре это выглядит так:

http://i031.radikal.ru/1005/b8/0c0ddc9a388b.jpg

НО, если выделить более 15 файлов формата TGA пункты меню куда то пропадают:

http://s52.radikal.ru/i138/1005/ac/578948f1c96f.jpg

хотя добавление в архив и тот же "Convert to file format..." остаются, поэтому эти манипуляции с реестром и добавление пунктов меню становится безсмысленным, так как мне нужно почти всегда конвертировать больше 15 файлов.

И так, уважаемые знатоки, Внимание! Вопрос!:

Как снять ограничение на выделение максимального количества файлов в 15, что приводит к пропаданию нужных пунктов меню. Либо есть какой то другой способ?

p.s.: делал такие же пункты для всех файлов (.* - в реестре) - результат тот же, выделяю более 15 файлов - пункты пропадают.

p.p.s.: ещё один вопрос: как изменить список пунктов меню в меню "Сортировка", чтобы там по умолчанию был ещё один пункт: Глубина цвета?

http://s39.radikal.ru/i086/1005/88/9b134e03e75b.jpg

Vadikan 15-05-2010 13:52 1413823

Цитата:

Цитата Tosyk
Как снять ограничение на выделение максимального количества файлов в 15 »

Читайте материалы сайта... Как сделать доступными команды контекстого меню "Открыть/Печать/Редактировать" для более 15 файлов в Windows 7

Цитата:

Цитата Tosyk
ещё один вопрос: как изменить список пунктов меню в меню "Сортировка", чтобы там по умолчанию был ещё один пункт: Глубина цвета? »

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

Tosyk 16-05-2010 11:51 1414390

2Vadikan:

Спасибо огромное, пункты меню теперь появляются для более 15 выделенных файлов!

По поводу глубины цвета: я понимаю, что можно поменять это вручную, но я спросил как сделать этот пункт по умолчанию. т.е. для всего windows, как это умолчание допустим есть для Типа, Имени, Даты.

upd:

Выяснилась такая проблема: при выделении любого количества файлов пункты меню есть, но корректно они работают только при выделении 22 файлов, а при выделении более 22 файлов программа обрабатывает только тот файл, на который я щёлкнул правой кнопкой мыши.

В чём может быть загвоздка?


Upd:

Так, проблема решилась изменением числа с 16 на 50. А какое вообще максимальное число можно туда поставить?

Vadikan 16-05-2010 13:01 1414431

Максимальное значение мне неизвестно, но поставьте тысячу и узнаете.
Цитата:

Цитата Tosyk
но я спросил как сделать этот пункт по умолчанию. т.е. для всего windows, как это умолчание допустим есть для Типа, Имени, Даты. »

Для всего Windows это не нужно, потому что не у всех файлов есть глубина цвета - она есть только у изображений. Соответственно сделайте это в библиотеке "Изображения" и добавляйте туда папки с изображениями. Подробное руководство по использованию библиотек Windows 7

Tosyk 16-05-2010 14:42 1414501

2 Vadikan:

Я стремлюсь сделать процесс конвертации как можно оптимизированным по времени, а добавлять куда то папки, чтобы отобразить их глубину цвета не очень то быстро! Куда проще в любой папке нажать ПКМ и упорядочить всё по глубине цвета. Я понимаю, что "Для всего Windows это не нужно, потому что не у всех файлов есть глубина цвета", но это нужно мне.

Я уверен, что это где-то в реестре, но вот где?

Morpheus 16-05-2010 14:54 1414506

Цитата:

Цитата Tosyk
По поводу глубины цвета: я понимаю, что можно поменять это вручную, но я спросил как сделать этот пункт по умолчанию. т.е. для всего windows, как это умолчание допустим есть для Типа, Имени, Даты. »

1.
Цитата:

Цитата Vadikan
Перейдите в табличный вид папки, добавьте столбец "глубина цвета". »

2. Упорядочить ---> параметры папок и поиска ---> вид ---> применить к папкам. Применится ко всем папкам "этого типа" во всём Windows. Тип папки задаётся в св-вах конкретной папки.

Vadikan 16-05-2010 15:58 1414538

Цитата:

Цитата Tosyk
Я стремлюсь сделать процесс конвертации как можно оптимизированным по времени »

Поясню, почему мой совет полностью соответствует вашей задаче. Для картинок в Windows есть папка Изображения, которая входит в одноименную библиотеку. Если в библиотеке добавить столбец, он отобразится в этой папке и всех других папках, туда входящих.

Очевидно, вы не храните картинке в папке Изображения профиля, что было бы оптимальным с точки зрения эффективности. Поэтому я и предлагаю вам добавить в библиотеку папку, в которой вы храните картинки. Это быстрее всего приводит к решению вашей задачи.

Альтернативный вариант изложил Morpheus, а я добавлю ссылку Как правильно настроить вид папок в Windows Vista.

Tosyk 16-05-2010 18:05 1414606

2 Morpheus, Vadikan:

Спасибо, всё работает чудесно: с помощью проги скомпилил себе екзешник из bat-файла для конвертации с установленными по умолчанию параметрами, сделал несколько reg-файлов для разных типов фалов. Теперь вроде как даже не нужен DirectX SDK.

Единственное в что раздражает: после выбора количества файлов и нажатия на пункты меню для каждого конвертируемого файла открывается отдельное окно, а вот в SDK в таком случае для конвертирования кучи файлов открывался лишь один texconv.exe и это никак не напрягало систему.

UPD:
Обнаружилась проблема: при конвертировании файлов (количество значение не имеет) некоторые выделенные файлы не конвертируются, вообще. Просто пропускаются. При повторном конвертировании тех же самых фалов могут не сконвертироваться совершенно другие файлы, а те, которые были пропущены первый раз - успешно сконвертируются.

В чём проблема?


Время: 01:08.

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