с недавних времён шоткаты используются для истории, что как бы и логично. и тут уже полезность возможности сильно возрастает. в результате очередной проверки апи на вшивость выяснилось, что всё не так прекрасно.
данный шортката: гуид плагина, текущая папка, хостфайл, данные плагина, возвращаемые в GetOpenPanelInfoW.
переход по шоткату происходит так:
1. если нет хостфайла, вызывается OpenW с OPEN_SHORTCUT. куда передаются данные плагина. тут всё хорошо.
2. если хостфайл есть, то фар на него позиционируется и как бы жмёт enter. и вот тут есть проблемы. во-первых не передаются данные плагина. т.е. скажем зашли мы через "Open (format menu)" в sfx архив как в pe файл. а из истории попадём как в архив. во-вторых на файл могут претендовать несколько плагинов — вылазит меню. хотя фару нужный плагин известен.
далее вызывает SetDirectory, тут тоже вроде всё красиво.
есть два предложения:
1. всегда делать всё по первому сценарию. т.е. и для плагинов с хостфайлом будет приходить OpenW с OPEN_SHORTCUT. в Data ссылка на сруктуру:
Code: Select all
struct ShortCutInfo
{
size_t StructSize;
const wchar_t *HostFile;
const wchar_t *ShortcutData;
};
какие будут возражения?