如何在不选择项目的情况下使用SHOpenFolderAndSelectItems?

时间:2014-03-11 00:54:33

标签: winapi windows-shell

我正在使用SHOpenFolderAndSelectItems打开一个显示特定位置的新资源管理器窗口(PIDL)。我对打开文件路径不感兴趣,所以我需要使用PIDL ,据我所知!

但是,我对选择窗口中的任何项目都不感兴趣。如果我没有传递任何要选择的项目,则会打开父文件夹,如文档所示:

  

选择数组中的项目数,即apidl。如果cidl为零,那么   pidlFolder必须指向描述a的完全指定的ITEMIDLIST   要选择的单个项目。此功能打开父文件夹和   选择那个项目。

我如何才能简单地打开传递的PIDL指向的位置?

作为测试,我传递了一个要选择的项目,指向空指针。这似乎有效,但我担心这可能会产生意想不到的副作用。似乎没有记录此行为。有没有更好的方法来实现我想要实现的目标,或者我现在使用此功能的方式是否正确?

1 个答案:

答案 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);