gpt4 book ai didi

c# - 扩展 Windows 资源管理器上下文菜单

转载 作者:可可西里 更新时间:2023-11-01 12:03:06 30 4
gpt4 key购买 nike

我很难弄清楚为什么这在我的电脑上不起作用。我读过这篇文章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# 手动刷新文件关联?

最佳答案

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

    [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

关于c# - 扩展 Windows 资源管理器上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8058971/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com