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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Наборы обновлений для Windows XP/2003/Windows 7 (http://forum.oszone.net/forumdisplay.php?f=62)
-   -   [addon] MPC-HC Shell Extension 1.0.0.1 (http://forum.oszone.net/showthread.php?t=228430)

wolkow70 21-02-2012 18:08 1863718

[addon] MPC-HC Shell Extension 1.0.0.1
 
Вложений: 1
MPC-HC Shell Extension 1.0.0.1
Расширение контекстного меню для Media Player Classic - Home Cinema.
Тип интеграции аддона - SVPACK.

Небольшое дополнение к популярному Media Player Classic - Home Cinema.
Создает в контекстном меню файлов пункты:



В типовой установке этого расширения пункты отображаются только для ассоциированных с Media Player Classic - Home Cinema файлов.

Немного поразмыслив, мне удалось найти способ заставить эти пункты отображаться для всех поддерживаемых плеером типов файлов, даже если они не ассоциированы с Media Player Classic - Home Cinema.
Делается это через ключи реестра отвечающие за системные файловые ассоциации.

К примеру так:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.flv\shellex\ContextMenuHandlers\MPCHCShe llExt]
@="{A2CF4243-6525-4764-B3F5-2FCDE2F47989}"

То есть, мы прописываем расширение оболочки не только в ключи файловых ассоциаций
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mplayerc.flv\shellex\ContextMenuHandlers\MPCHCShellExt]
@="{A2CF4243-6525-4764-B3F5-2FCDE2F47989}",

но и в ключи системных файловых ассоциаций, для чего эти ключи специально создаются при работе скрипта установки аддона.
В результате, если даже, тот или иной файл ассоциирован с другим приложением, пункты контекстного меню будут отражены и в этом случае.
Оказывается это очень удобно. Ассоциируем медиафайлы с каким-нибудь более продвинутым плеером, но всегда имеем возможность удобно открыть их в Media Player Classic - Home Cinema.

Аддон целесообразно устанавливать после Media Player Classic - Home Cinema.
Файл расширения устанавливается в собственную директорию установки Program Files\MPC-HC Shell Extension, где создается и деинсталлятор расширения оболочки.

Аддон создает в Главном меню Пуск ярлыки, отвечающие за удаление, ре-ререгистрацию и де-регистрацию расширения.

Возможно использование на живой системе. Ключ тихой установки /S.

Ссылка для скачивание аддона:
http://rusfolder.com/35501516

Вариант аддона с поддержкой установки на 64-битные системы (добавлена библиотека MPCHCShellExt64.dll).
Определение системы при установке автоматическое.
Ссылка для скачивания:
http://rusfolder.com/35772418

apozlevich 21-02-2012 19:15 1863765

Эм.. Спасибо за расширение, порадовала идея, но нельзя ли упростить до твика?

wolkow70 21-02-2012 20:13 1863808

Цитата:

Цитата apozlevich
Эм.. Спасибо за расширение, порадовала идея, но нельзя ли упростить до твика? »

До какого твика? :) Там код скрипта на несколько сотен строк. Для каждого расширения вносятся записи в реестр и команды на удаление в деинсталляторе. После удаления такие записи нельзя оставлять в реестре.

apozlevich 21-02-2012 20:13 1863809

Вот без деинсталлятора :)

wolkow70 21-02-2012 20:25 1863818

Цитата:

Цитата apozlevich
Вот без деинсталлятора »

Вы в ручную что ли будете удалять кучу записей из реестра?

apozlevich 21-02-2012 20:26 1863820

Цитата:

Цитата wolkow70
Вы в ручную что ли будете удалять кучу записей из реестра? »

А зачем мне их удалять? Я не собираюсь переходить с MPC. Кстати, а почему их так много?

wolkow70 21-02-2012 20:31 1863829

Цитата:

Цитата apozlevich
А зачем мне их удалять? Я не собираюсь переходить с MPC. Кстати, а почему их так много? »

Потому, что форматов много поддерживается, и для каждого создается свой ключ.

Цитата:

Цитата apozlevich
Я не собираюсь переходить с MPC »

Это дело индивидуальное. Я ведь не для Вас одного выложил. Кому то и не понравится.

apozlevich 21-02-2012 20:34 1863831

Цитата:

Цитата wolkow70
Потому, что форматов много поддерживается, и для каждого создается свой ключ. »

Чорт, не подумал.

Да и вообще, можно написать простенький GUI, который будит определять, какие ключи вносить, раз уж простой пункт в контекстном меню требует так много заморочек. На чем скрипт-то (может помогу с GUI)?

wolkow70 21-02-2012 20:57 1863850

Цитата:

Цитата apozlevich
На чем скрипт-то (может помогу с GUI)? »

Скрипт на NSIS. Раскрываете компоненты и выбираете, какие форматы отмечать, а какие нет.

apozlevich 21-02-2012 21:18 1863870

Я имел в виду перенастройку уже установленного расширения

wolkow70 22-02-2012 10:23 1864125

Цитата:

Цитата apozlevich
Я имел в виду перенастройку уже установленного расширения »

Сие невозможно. Что установлено, то и удаляется. Или ручками.

apozlevich 22-02-2012 12:27 1864250

Цитата:

Цитата wolkow70
Или ручками. »

Ну вот и вместо ручек предлагаю GUI.

greg_b 25-02-2012 23:43 1866634

wolkow70, а в шапку 300 кило прицепить нельзя? Смешно смотреть - подождите 30 секунд, а то наш трафик того....

wolkow70 27-02-2012 09:53 1867461

Цитата:

Цитата greg_b
а в шапку 300 кило прицепить нельзя? Смешно смотреть - подождите 30 секунд, а то наш трафик того.... »

Добавил аддон во вложение.

mariolast 28-02-2012 02:06 1868072

wolkow70,
Можно ли выложить одним твиком реестра, какие изменения вносяться в реестр? Есть желание встроить это прямо в инсталлятор Медиаплеера.

wolkow70 28-02-2012 08:16 1868136

Цитата:

Цитата mariolast
какие изменения вносяться в реестр? »

1.Регистрация самой MPCHCShellExt.dll в системе.

2. Для каждого нужного и поддерживаемого плеером расширения дополнительно создается ключ реестра по шаблону:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.flv\shellex\ContextMenuHandlers\MPCHCShe llExt]
@="{A2CF4243-6525-4764-B3F5-2FCDE2F47989}"

Причем, в этой разделе для некоторых расширений уже есть ключи (например для AVI, MPG, WMV и других системных расширений), поэтому в эти ключи добавляется только само расширение:

\shellex\ContextMenuHandlers\MPCHCShe llExt]
@="{A2CF4243-6525-4764-B3F5-2FCDE2F47989}"

В сборке деинсталлятор потом все это корректно удаляет (полностью ключи или подключи для уже существовавших ключей, де-регистрацию и удаление модуля).

Твика у меня нет, так как изменения в реестре вносятся коммандами скрипта сборки.
Меня устраивает вариант инсталлятора, так как можно оперативно отметить только нужные расширения. Кроме того, деинсталлятор проверяет ключи на наличие других данных, и если данных нет, то удяляет весь ключ, а если есть, то только свое значение.

biork 09-12-2012 02:28 2041621

На семёрке должно работать?

wolkow70 09-12-2012 09:05 2041653

Цитата:

Цитата biork
На семёрке должно работать? »

Работает.

truvo 09-12-2012 19:50 2041972

Цитата:

Цитата wolkow70
Аддон целесообразно устанавливать после Media Player Classic - Home Cinema. »

Предлагаю добавить это в nfo

Joykotik 16-12-2012 10:59 2046304

Аддон полезный, но у меня на семёрке работает после инсталляции, а после перезагрузки системы уже нет, в чём может быть причина?

wolkow70 16-12-2012 14:41 2046411

Цитата:

Цитата Joykotik
но у меня на семёрке работает после инсталляции, а после перезагрузки системы уже нет, в чём может быть причина? »

Семерка скольки разрядная?

Joykotik 16-12-2012 15:41 2046451

Семёрка 32х, только что обнаружил если UAC отключаешь тогда всё работает. Может манифест в dll поправить?

wolkow70 16-12-2012 16:08 2046467

Цитата:

Цитата Joykotik
Может манифест в dll поправить? »

Попробуйте, но у меня все работает.

Joykotik 05-01-2013 16:15 2059596

Новый ноут Fujitsu AH531, Windows 7 x32, официальные обновления с ru-board (список TAILORD), не работает расширение. С отключённым UAC - работает, изменение манифеста тоже ничего не дало, запуск explorer.exe с правами админа - тоже... Как повысить привилегии этой dll?

wolkow70 05-01-2013 19:52 2059764

Цитата:

Цитата Joykotik
Как повысить привилегии этой dll? »

Проверьте куда у Вас при регистрации библиотеки прописывается CLSID {A2CF4243-6525-4764-B3F5-2FCDE2F47989}
в HKLM\SOFTWARE\Classes или в HKCU\SOFTWARE\Classes ?
Прописываются ли в реестре для нужных расширений ключи типа:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.flv\shellex\ContextMenuHandlers\MPCHCShe llExt]
@="{A2CF4243-6525-4764-B3F5-2FCDE2F47989}"

Joykotik 05-01-2013 22:28 2059880

CLSID {A2CF4243-6525-4764-B3F5-2FCDE2F47989} прописывается в HKLM\SOFTWARE\Classes
ключ типа:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.flv\shellex\ContextMenuHandlers\MPCHCShe llExt]
@="{A2CF4243-6525-4764-B3F5-2FCDE2F47989}"
прописан.

Заметил такую особенность. Если MPC-HC запустить в ручную, до клика по расширению, то тогда расширение работает, т.е. библиотека передаёт плееру путь к файлу и он его воспроизводит. Получается, что библиотека не может именно запустить плеер, при включённом UAC, но при отключённом UAC запускает. И почему то всё работает после установки плеера и расширения до перезагрузки, а после перезагрузки - только с отключённым UAC и это уже на двух разных компах с Win 7 x32.

wolkow70 06-01-2013 11:41 2060076

Цитата:

Цитата Joykotik
Если MPC-HC запустить в ручную, до клика по расширению, то тогда расширение работает, т.е. библиотека передаёт плееру путь к файлу и он его воспроизводит »

Правильно, потому, что MPC-HC при запуске прописывает путь к себе в реестр, а библиотека при запуске его считывает для передачи команды на открытие файла.

[HKEY_CURRENT_USER\Software\Gabest\Media Player Classic]
"ExePath"="C:\\Program Files\\K-Lite Codec Pack\\Media Player Classic\\mpc-hc.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Gabest\Media Player Classic]
"ExePath"="C:\\Program Files\\K-Lite Codec Pack\\Media Player Classic\\mpc-hc.exe"

Если этот путь не прописан, то библиотека не сможет передать команду открыть файл.
При правильной установке MPC-HC при инсталляции прописывается путь к плееру. Иначе, приходится открывать плеер, чтобы путь появился. Именно поэтому,я рекомендовал устанавливать вначале плеер, затем библиотеку.
Ключи CLSID у вас правильно прописываются.

Еще раз проверил у себя на Win 7 (32) , все работает.

Joykotik 06-01-2013 16:30 2060267

[HKEY_CURRENT_USER\Software\Gabest\Media Player Classic]
"ExePath"="C:\\Program Files\\K-Lite Codec Pack\\Media Player Classic\\mpc-hc.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Gabest\Media Player Classic]
"ExePath"="C:\\Program Files\\K-Lite Codec Pack\\Media Player Classic\\mpc-hc.exe"

эти ключи тоже есть.

Устанавливаю MPC-HC, однократно запускаю плеер
Устанавливаю расширение - всё работает
Перезагружаюсь - не работает
Отлючаю UAC - работает
Включаю UAC - не работает
Удаляю MPC-HC
Удаляю Расширение
Устанавливаю MPC-HC, однократно запускаю плеер
Устанавливаю расширение - всё работает
Перезагружаюсь - не работает
Отлючаю UAC - работает
Включаю UAC - не работает
Удаляю MPC-HC
Удаляю Расширение
и.т.д.

При этом, при открытом плеере, всегда работает.

Это всё на двух разных компах с Win7 x32, Rus OEM Ultimate Лицензия. Один из которых, только с что установленной системой + официальные обновления с руборда.

Учётка, созданная при установке системы пользователь с правами админа. что же можно ещё сделать что бы оно наконец то заработало?

wolkow70 06-01-2013 17:03 2060300

Цитата:

Цитата Joykotik
Учётка, созданная при установке системы пользователь с правами админа. »

У меня самого такая же учетка. Попробуйте не удалять расширение, а резрегистрировать, и вновь зарегистрировать с правами администратора.

Joykotik 06-01-2013 18:30 2060365

запустил от имени админа такой батник

regsvr32 /u "%~dp0MPCHCShellExt.dll"
taskkill /im explorer.exe /f
ping -n 5 -w 1 127.0.0.1 > nul
start explorer.exe
regsvr32 "%~dp0MPCHCShellExt.dll"

работает! сейчас перезагружусь, посмотрю что будет..

нет, после перезагрузки не работает. интересное явление, просто даже интересно какая может быть причина такому?

Joykotik 06-01-2013 19:06 2060388

а вот так тоже не работает, т.е. важна именно перезагрузка эксплорера.

regsvr32 /u "%~dp0MPCHCShellExt.dll"
ping -n 5 -w 1 127.0.0.1 > nul
regsvr32 "%~dp0MPCHCShellExt.dll"

и вот интересно)

regsvr32 /u "%~dp0MPCHCShellExt.dll"
taskkill /im explorer.exe /f
ping -n 5 -w 1 127.0.0.1 > nul
start explorer.exe
regsvr32 "%~dp0MPCHCShellExt.dll"

работает, затем,

taskkill /im explorer.exe /f
ping -n 5 -w 1 127.0.0.1 > nul
start explorer.exe

уже не работает, как то библиотека с эксплорером то дружит то нет :) в чём же причина?

wolkow70 06-01-2013 20:24 2060440

Цитата:

Цитата Joykotik
просто даже интересно какая может быть причина такому? »

Пробуйте с другими дистрибутивами MPC-HC. Может в инсталляции загвоздка.

Joykotik 08-01-2013 09:49 2061633

Нет, не работает ваше расширение. Что только не делал. В конце концов нашёл программу Open++ за 10мин сделал тоже самое. Она корректно работает.

wolkow70 16-03-2013 19:12 2112541

Пересобрал аддон, обновленная ссылка на закачку помещена в шапке.
Доработка стала необходимой в связи с тем, что в последних версиях Media Player Classic - Home Cinema, программа при запуске прописывает путь к исполняемому файлу только в ключ реестра для текущего пользователя.
Библиотека MPCHCShellExt.dll при регистрации читает путь из ключа для всех пользователей, поэтому с последними версиями могли быть проблемы.
Доработка заключается в том, что при установке читается путь к файлу mpc-hc.exe из ключа в разделе HKCU "Software\Gabest\Media Player Classic" (параметр "ExePath") и прописывается в раздел HKLM "Software\Gabest\Media Player Classic" (параметр "ExePath")

wolkow70 01-04-2013 18:27 2123743

Сделал вариант аддона с поддержкой установки на 64-битные системы (добавлена библиотека MPCHCShellExt64.dll).
Определение разрядности системы при установке автоматическое.
Ссылка для скачивания:
http://rusfolder.com/35772418


Время: 14:44.

Время: 14:44.
© OSzone.net 2001-