Страница 1 из 1

Как добавить кнопку с функцией элемента контекстного меню

Добавлено: Чт май 29, 2014 15:06
megab00m
Вопрос такой. Поставил тут на днях Win 8.1 и порадовала меня возможность трансляции потокового видео на подключенный по локалке ТВ - отличная замена глючному HomeMediaSErver. И есть в контекстном меню проводника пунктик Play To.

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

Добавлено: Чт май 29, 2014 15:32
MVV
Посмотри, какая программа запускается по этому пунктику, добавь её на панель. Посмотреть можно или в диспетчере задач во время воспроизведения, или в реестре: в разделе HKCR\*.ext смотришь название ассоциированного типа (ext - твоё расширение видеофайла), затем в разделе с названием этого типа в подразделе shell ищешь команду, описывающую этот пункт меню, там будет указана командная строка (если, конечно, это не динамически подключаемый пункт меню).

Добавлено: Чт май 29, 2014 16:47
megab00m
Пункт меню появляется только при правом клике по видео-файлу и только когда ТВ включен, т.е. находится по локалке. Наверное динамический - если я правильно понимаю...

http://savepic.net/5633948.jpg

Запускается Windows Media Player вот в таком вот виде

http://savepic.net/5627804.jpg

Блин не дае форум нормально картинки вставить

CaptainFlint: Разблокировал ссылки.

Добавлено: Чт май 29, 2014 17:08
MVV
Да, пункт динамический, даже подпункт. Пробуй через Process Explorer / Process Hacker посмотреть командную строку запуска плейера, какие параметры ему передаются?

Добавлено: Чт май 29, 2014 18:57
Serge Yolkin
Из скрипта можно непосредственно пункт меню вызвать, но решение может зависеть от конкретной системы. Чисто для примера:

Код: Выделить всё

var
 f=new ActiveXObject('Scripting.FileSystemObject'),
 s=new ActiveXObject('Shell.Application'),
 a=s.nameSpace(f.getParentFolderName(WScript.arguments(0))),
 v=a.parseName(f.getFileName(WScript.arguments(0))).verbs();
if(a!=null){
  if(v!=null){
    i=-1;
    while(v.item(++i))
     if(v.item(i).name.toLowerCase().replace(/\&/,'')=='play to'){
       v.item(i).DoIt();
       break;
     }
  }
}
Полное имя файла передаётся аргументом.

Добавлено: Чт май 29, 2014 21:06
Flasher
Serge Yolkin
А зачем перебирать в цикле, если есть InvokeVerb?

Добавлено: Пт май 30, 2014 00:03
megab00m
ээээ... а вот как нить попроще... без кодинга, скриптинга и прочего рукоблудия?=)

Добавлено: Пт май 30, 2014 01:32
Flasher
Проще за деньги. Дал денег, открыл доступ к удалёнке через экран, а сам пошёл лузгать семки.

Добавлено: Пт май 30, 2014 01:47
Serge Yolkin
Flasher
А с инвоком какая-то засада была. ЕМНИП, в какой-то винде имя надо было указывать с амперсандом в нужном месте, а в другой - без. Точно не помню, но пример для себя храню именно с циклом и вырезанием амперсанда, ежели он есть.

Добавлено: Пт май 30, 2014 01:54
Flasher
Serge Yolkin
Учтём'c.

Добавлено: Пт май 30, 2014 08:52
megab00m
Flasher писал(а):Проще за деньги. Дал денег, открыл доступ к удалёнке через экран, а сам пошёл лузгать семки.
не совсем понятно. кому, сколько и главное за что надо давать денег, чтобы МОЙ телевизор показывал МОИ видео-файлы с МОЕГО компьютера?

Если у Вас есть какие-то конкретные предложения - озвучьте, нет - не стоит умничать.

Добавлено: Пт май 30, 2014 09:02
Flasher
megab00m
Это я так остроумничаю. Как ни странно, своя лень нередко порождает чужую. Коль самому 'рукоблудием' заниматься нет желания, то почему им должны на халяву заниматься за кого-то другие?

И предложений выше было недостаточно? Что было сделано в их направлении? На вопрос MVV о комстроке мы ответ увидели?

Добавлено: Пт май 30, 2014 19:24
megab00m
Flasher
эээ... ну вобщем-то мне не не жизненно необходимо сделать эту кнопку. Я думал, что может быть существует какой-то универсальный способ вытащить пункт контекстного меню на панель. Ну на нет и суда нет. Или кто-то делал что-то подобное и имеет готовое решение.

Ну чтож... Еще один минус в копилку ТК.

Топик можно закрывать.

ЗЫ. Если честно, то вот такие гуру в любых форумах рунета вызывают раздражение как минимум. Если вы не можете дать простое решение на заданный вопрос, то зачем сразу разгибать пальцы как павлиний хвост, втирать что-то про порождающую лень etc,...

Не буду больше ничего говорить, ибо не о чем и не за чем.

Добавлено: Пт май 30, 2014 19:37
Flasher
megab00m
Неужели до сих пор неясно, что готовое решение (возможно, более простое, хотя чего там и так сложного?) может возникнуть после того, как запрашивающая сторона начнёт реагировать на конкретные заданные вопросы и предложения, сделанные выше?

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

P.S.: Мало кто захочет помогать тому, кто не хочет помочь себе сам.