扩展windows资源管理器上下文菜单

本文关键字:菜单 上下文 资源管理器 windows 扩展 | 更新日期: 2023-09-27 18:13:48

我很难弄清楚为什么这在我的电脑上不起作用。我已经阅读了这篇文章http://msdn.microsoft.com/en-us/library/bb776820.aspx并尝试了它,它适用于未知的文件类型,但对于诸如.bmp之类的已知文件类型,它不起作用-我还删除了.bmp下的其他密钥-没有帮助。我在HKEY_CLASSES_ROOT.bmp和HKEY_CURRENT_USER'Software'Microsoft'Windows'CurrentVersion'Explorer'FileExts.bmp中尝试过我需要在我的程序中实现这一点,以便它在一些文件类型(如bmp)上具有自定义上下文菜单项。顺便说一句。我试过了ContextEdit(一个免费软件)——也不管用——有什么建议吗?也许有些东西不刷新(我已经尝试重新启动-没有做任何更改)?

编辑:一个更新-如果我在设置默认程序和Windows照片查看器下,由于某种原因,我不能禁用一些文件类型,如。jpg,。bmp,。gif。这是奇怪的…

编辑。2:现在它开始工作,我已经确定了问题-文件关联没有刷新,即使重新启动我的电脑。在我将一个txt文件关联到另一个编辑器之后,我的。bmp菜单、图标和默认程序都发生了变化。所以现在的主要问题是-我如何手动刷新文件关联使用c# ?

扩展windows资源管理器上下文菜单

我想我已经找到了一个解决方案,它是这样的- define:

    [DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern void SHChangeNotify(uint wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2);
    const uint SHCNF_IDLIST = 0x0;
    const uint SHCNE_ASSOCCHANGED = 0x08000000;

然后在需要的时候用关联做你的代码,在它执行之后:

    SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);

另外,如果提到的注册表项不工作,请尝试:

    HKEY_CLASSES_ROOT'SystemFileAssociations'extension'Shell'yourcommand