如何使用 SHOpenFolderAndSelectItems 而不选择项目?

Ste*_*ris 2 winapi windows-shell

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

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

选择数组 apidl 中的项目计数。如果 cidl 为零,则 pidlFolder 必须指向描述要选择的单个项目的完全指定的 ITEMIDLIST。此函数打开父文件夹并选择该项目。

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

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

Rem*_*eau 6

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);
Run Code Online (Sandbox Code Playgroud)