Как зарегистрировать расширение Shell с определенным расширением файла - PullRequest
1 голос
/ 21 сентября 2010

Я протестировал небольшое расширение оболочки, ссылаясь на статью о проекте кода.Хотя весь процесс довольно сложный, я кое-что понимаю, каковы следующие методы и что они делают.: 1003

Initialize,DragQueryFile,GetCommandString,InvokeCommand,QueryContextMenu

Но после прочтения я не могу понять, как нашРасширение ContextMenu связано с файлом .txt.

В статье объясняется, что если мы посмотрим внутрь файла .rgs, то увидим, что он создает запись в реестре, например:

HKCR
{
  NoRemove txtfile
  {
    NoRemove ShellEx
    {
      NoRemove ContextMenuHandlers
      {
        ForceRemove SimpleShlExt = s '{5E2121EE-0300-11D4-8D3B-444553540000}'
      }
    }
  }
}

Но на самом деле, после прочтения статьи и написания кода, когда я открыл SimpleShlExt.rgs Это выглядит примерно так:

- Изменить как в CodeProject -

HKCR
{

    NoRemove CLSID
    {
        ForceRemove {1E569362-E0A6-4DEA-AB1F-67D6D3DEF1A5} = s 'SimpleShExt Class'
        {

            InprocServer32 = s '%MODULE%'
            {
                val ThreadingModel = s 'Apartment'
            }

        }
    }
}

Создает ли реестр динамически любое сопоставление между записями CLSID и txtfile reg.

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

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

Одна из возможностей - зарегистрировать ваше контекстное меню для всех расширений файлов, которые вы хотите поддерживать.Другая возможность - зарегистрировать ваше расширение в классе подстановочных знаков / *.Затем он будет создан для всех файлов.Затем вы можете решить, должно ли контекстное меню быть видимым для этого файла или нет.Это можно сделать с помощью аргумента IDataObject объекта IShellExtInit :: Initialize.

0 голосов
/ 21 сентября 2010

Вы должны добавить деталь для регистрации с расширением txt файла вручную в ваш файл rgs.Visual Studio добавляет только часть, чтобы зарегистрировать расширение оболочки.

...