我正在编写一些代码将自动选择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
作为参数传递时,选择Explorer中的下一个项目。该方法是自称
现在,我不太了解SelectItem
,它需要一个变体和一个int。根据MSDN的说法,INT标志告诉该方法要进行哪种选择,仅此而已,没有解释哪种变体。
我应该通过VARIANT *pvfi
?
对于 variant 您可以通过项目的 lpcitemidlist 。
IShellFolderViewDual
是 dual 对(已久的IIRC)IShellFolderView
。仍然存在一些残留文档。似乎有人是量子物理学的粉丝。
变体应携带VT_UNKNOWN
指向您要更改选择的项目的FolderItem
实例。然后,选择标志如下:
- 0(
SVSI_DESELECT
)DeSelect - 1(
SVSI_SELECT
)选择 - 3(
SVSI_EDIT
)将项目放在编辑模式 - 4(
SVSI_DESELECTOTHERS
)取消选择所有指定项目 - 8(
SVSI_ENSUREVISIBLE
)确保在视图中可见该项目(滚动视图) - 16(
SVSI_FOCUSED
)给予该项目焦点