我正在使用SHOpenFolderAndSelectItems打开一个显示特定位置的新资源管理器窗口(PIDL)。我对打开文件路径不感兴趣,所以我需要使用PIDL ,据我所知!
但是,我对选择窗口中的任何项目都不感兴趣。如果我没有传递任何要选择的项目,则会打开父文件夹,如文档所示:
选择数组中的项目数,即apidl。如果cidl为零,那么 pidlFolder必须指向描述a的完全指定的ITEMIDLIST 要选择的单个项目。此功能打开父文件夹和 选择那个项目。
我如何才能简单地打开传递的PIDL指向的位置?
作为测试,我传递了一个要选择的项目,指向空指针。这似乎有效,但我担心这可能会产生意想不到的副作用。似乎没有记录此行为。有没有更好的方法来实现我想要实现的目标,或者我现在使用此功能的方式是否正确?
答案 0 :(得分:4)
SHOpenFolder**AndSelectItems**()
应该是一个很好的迹象,表明这是你使用的错误功能。如果您只想打开文件夹,请改用ShellExecuteEx()
,例如:
SHELLEXECUTEINFO sei = {0};
sei.cbSize = sizeof(sei);
sei.fMaask = SEE_MASK_IDLIST;
sei.hwnd = ...;
sei.lpVerb = TEXT("explore"); // <-- not "open"
sei.lpIDList = ...; // <-- your pidl
sei.nShow = SW_SHOW;
ShellExecuteEx(&sei);