Я пишу код для автоматизации выбора элементов Window Explorer (explorer.exe). И я нашел два метода, которые могут помочь:
HRESULT SelectItem(
[in] VARIANT *pvfi,
[in] int dwFlags
);
// from http://msdn.microsoft.com/en-us/library/windows/desktop/dd894079(v=vs.85).aspx
HRESULT SelectItemRelative(
[in] int iRelative
);
// from http://msdn.microsoft.com/en-us/library/windows/desktop/bb774966(v=vs.85).aspx
я пробовал SelectItemRelative
и это работает отлично; следующий элемент в проводнике выбирается при прохождении 1
в качестве аргумента. Метод не требует пояснений
Теперь я не совсем понимаю SelectItem
Это займет ВАРИАНТ и Int. Согласно MSDN, флаг int указывает методу, какой тип выбора сделать, и все, без объяснения того, что такое VARIANT.
Что я должен передать VARIANT *pvfi
?
За ВАРИАНТ ты можешь пройти LPCITEMIDLIST пункта
IShellFolderViewDual
это двойной к (давно ушел IIRC) IShellFolderView
, Немного рудиментарная документация остается. Кажется, кто-то был фанатом квантовой физики.
Вариант должен нести VT_UNKNOWN
указывая на FolderItem
Экземпляр элемента, который вы хотите изменить выбор. Затем флаги выбора выглядят следующим образом:
SVSI_DESELECT
Отмените выборSVSI_SELECT
) ВыбратьSVSI_EDIT
) перевести элемент в режим редактированияSVSI_DESELECTOTHERS
) отменить выбор всего бу указанного элементаSVSI_ENSUREVISIBLE
) убедитесь, что элемент виден на виде (прокрутите вид)SVSI_FOCUSED
) уделить внимание предмету