Расширение контекстного меню проводника Windows - PullRequest
1 голос
/ 09 ноября 2011

Мне трудно понять, почему это не работает на моем компьютере.Я прочитал эту статью http://msdn.microsoft.com/en-us/library/bb776820.aspx и попробовал ее, и она работает для файлов неизвестного типа, но для таких, как .bmp, это не так - я также удалил другие ключи в .bmp - didn 'Т помочь.Я пробовал это в HKEY_CLASSES_ROOT.bmp и в HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts.bmp. Мне нужно реализовать это в моей программе, чтобы он имел элементы пользовательского контекстного меню для некоторых типов файлов, таких как bmp.Кстати.Я пробовал ContextEdit (бесплатная программа) - тоже не сработало - есть идеи?Может быть, что-то не обновляет (я пытался перезагрузить компьютер - не вносил никаких изменений)?

edit: Одно обновление - если я по какой-то причине захожу в меню «Установка программ по умолчанию» и «Просмотр фотографий Windows», я не могу отключитьэто для некоторых типов файлов, таких как .jpg, .bmp, .gif.Это странно ...

редактировать нет.2: теперь это начало работать, и я определил проблему - ассоциации файла не обновлялись даже после перезагрузки моего компьютера.После того, как я связал текстовый файл с другим редактором, мои .bmp меню, значок и программа по умолчанию изменились.Итак, главный вопрос сейчас - как вручную обновить ассоциации файлов с помощью C #?

1 Ответ

2 голосов
/ 10 ноября 2011

Я думаю, что нашел решение для этого, и оно выглядит так - определить:

    [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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...