Тот факт, что элементы sendto являются объектами файловой системы, является деталью реализации, меню заполняется расширением оболочки sendto и может быть расширено для включения других вещей в следующую версию Windows и т. Д. Фактически, обработка папки sendto какпроблематично было просто создать папку с ярлыками, которые можно выполнить с одним параметром, поскольку Windows95 ( powertoys / shell toys )
Некоторые из элементов sendto не являются .lnk, а являются уникальными расширениями файлов сзарегистрированный обработчик отбрасывания (.DeskLink, .OtherFolder, .MAPIMail и т. д.)
Документированным способом вызова элемента sendto будет использование IContextMenu .Неуправляемый способ сделать это - вызвать SHBindToParent для объекта, для которого вы хотите эмулировать действие sendto (запрашивая IID_IShellFolder), затем вызвать IShellFolder :: GetUIObjectOf и запросить IID_IContextMenu, после чего вы можете вызвать IContextMenu :: QueryContextMenu чтобы заполнить HMENU, вам нужно будет найти подменю sendto (я думаю, что оно вернет sendto в качестве своего глагола, если вы спросите его с помощью IContextMenu :: GetCommandString). Затем вы можетеПеречислите подменю с функциями меню winapi и / или IContextMenu :: GetCommandString, чтобы найти элемент, который вы хотите вызвать, затем вызовите IContextMenu :: InvokeCommand