C++ 如何用特定的文件扩展名注册Shell扩展名
我已经测试了一个小型shell扩展,它引用了on-code项目。虽然整个过程相当复杂,但我知道下面的方法和方法C++ 如何用特定的文件扩展名注册Shell扩展名,c++,windows,windows-shell,shell-extensions,C++,Windows,Windows Shell,Shell Extensions,我已经测试了一个小型shell扩展,它引用了on-code项目。虽然整个过程相当复杂,但我知道下面的方法和方法 初始化、DragQueryFile、GetCommandString、InvokeCommand、QueryContextMenu 但读完后,我无法理解我们的ContextMenu扩展名是如何与.txt文件相关联的 本文解释了如果我们查看.rgs文件,我们可以看到它创建了如下注册表项: HKCR { NoRemove txtfile { NoRemove ShellEx
初始化、DragQueryFile、GetCommandString、InvokeCommand、QueryContextMenu
但读完后,我无法理解我们的ContextMenu扩展名是如何与.txt文件相关联的
本文解释了如果我们查看.rgs文件,我们可以看到它创建了如下注册表项:
HKCR
{
NoRemove txtfile
{
NoRemove ShellEx
{
NoRemove ContextMenuHandlers
{
ForceRemove SimpleShlExt = s '{5E2121EE-0300-11D4-8D3B-444553540000}'
}
}
}
}
但实际上,在看完本文并编写代码之后,当我打开simpleslex.rgs
时,它看起来是这样的:
HKCR
{
NoRemove txtfile
{
NoRemove ShellEx
{
NoRemove ContextMenuHandlers
{
ForceRemove SimpleShlExt = s '{5E2121EE-0300-11D4-8D3B-444553540000}'
}
}
}
}
--在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。一种可能是注册您想要支持的所有文件扩展名的上下文菜单。另一种可能是在wildcard/*类中注册扩展。然后,它将为所有文件实例化。然后,您可以决定上下文菜单对此文件是否可见。这可以通过使用IShellExtInit::Initialize的IDataObject参数来完成。一种可能是为您想要支持的所有文件扩展名注册上下文菜单。另一种可能是在wildcard/*类中注册扩展。然后,它将为所有文件实例化。然后,您可以决定上下文菜单对此文件是否可见。这可以通过使用IShellExtInit::Initialize的IDataObject参数来完成。您必须将要使用txt文件扩展名注册的部件手动添加到rgs文件中。Visual Studio仅添加要注册外壳扩展名的部件。您必须将要注册txt文件扩展名的部件手动添加到rgs文件中。Visual Studio仅添加部件以注册外壳扩展。假设库的
uuid
为5E2121EE-0300-11D4-8D3B-444553540000
,然后使用以下命令将外壳扩展与*.txt
和*.tab
文件关联。为每个新扩展添加另一个块:
NoRemove .txt
{
NoRemove shellex
{
{00021500-0000-0000-C000-000000000046} = s '{5E2121EE-0300-11D4-8D3B-444553540000}'
}
}
NoRemove .tab
{
NoRemove shellex
{
{00021500-0000-0000-C000-000000000046} = s '{5E2121EE-0300-11D4-8D3B-444553540000}'
}
}
假设库的
uuid
为5E2121EE-0300-11D4-8D3B-444553540000
,则使用以下命令将shell扩展与*.txt
和*.tab
文件关联。为每个新扩展添加另一个块:
NoRemove .txt
{
NoRemove shellex
{
{00021500-0000-0000-C000-000000000046} = s '{5E2121EE-0300-11D4-8D3B-444553540000}'
}
}
NoRemove .tab
{
NoRemove shellex
{
{00021500-0000-0000-C000-000000000046} = s '{5E2121EE-0300-11D4-8D3B-444553540000}'
}
}
如果您有任何代码Spinet或相关文章please@subhen我是用regedit做的,所以没有示例:P如果您有任何代码Spinet或相关文章,这可能会有所帮助please@subhen我是用regedit做的,所以没有例子:P也许这有帮助