コードプロジェクトの記事を参照して、小さなシェル拡張をテストしました。全体のプロセスは非常に複雑ですが、次の方法とは何か、そしてそれらが何をするのかについて、いくつかの方法を知っています。
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がわからないためです。