[*]Я создал проект Visual Studio, ориентированный на Windows net8.0.
[*]Я использую SharpShell 2.7.2
Для создания контекстного меню я использую следующий код:
Код: Выделить всё
protected override bool CanShowMenu() {
log("CanShowMenu");
/* redacted */
log("YES");
return true;
}
protected override ContextMenuStrip CreateMenu() {
var menu = new ContextMenuStrip();
try {
log("getting menu");
var mainItem = new ToolStripMenuItem {
Text = "Assembler A->Z"
//,Image = Properties.Resources.AssembleAZ
};
mainItem.Click += (sender, e) => {
log(SelectedItemPaths);
};
menu.Items.Add(mainItem);
} catch (Exception? ex) {
log(ex);
}
return menu;
}
,Image = Properties.Resources.AssembleAZ
Изображение (Properties.Resources.AssembleAZ) представляет собой копию файла из образцов SharpShell, загруженного вместе с resx-файлом. Я проверил свойства как файла resx, так и файла изображения. Оба варианта соответствуют образцу SharpShell.
Тогда я даже не вижу «получения меню» в журналах, и журнал (ex) не регистрирует никаких ошибок.
Но я получаю логи от CanShowMenu().
И проверив реестр *\shellex\ContextMenuHandlers\MyKey, кажется, что сервер работает правильно установлен.
Любая помощь приветствуется.
====
Я также пытаюсь напрямую загрузить изображение из существующего файла:
Image.FromFile(@"c:\temp\AssembleAZ.png");
< /blockquote>
====
Я включаю Отладка SharShell и получение следующей ошибки:
System.MissingMethodException: метод не найден: 'Void System.Windows.Forms.ToolStripItem.set_Image(System.Drawing. Изображение)».
Подробнее здесь: https://stackoverflow.com/questions/793 ... g-an-image
Мобильная версия