方法1:
ShellExecuteA(NULL, "open", "explorer.exe", "/select,\"strFilePath\"", NULL, SW_SHOWNORMAL)
strFilePath 是 文件的全路径。
/select 是 explorer.exe 的一个命令行开关,其他开关还有 /n , /e , /root 等,具体查百度。
缺点:多次调用会打开多个文件夹
方法2:
1、LPSHELLFOLDER pDesktopFolder;
SHGetDesktopFolder( &pDesktopFolder)
得到 SHELLFOLDER 的 COM接口,
2、然后用改接口的方法 pDesktopFolder->ParseDisplayName( path, &pidl, ...)
分别得到目录的pidlFolder(传入目录路径)和文件的pidlFile(传入文件路径),
3、然后使用 API接口 SHOpenFolderAndSelectItems( pidlFolder, 1, &pidlFile, 0) 即可。
方法3:
和方法2类似,不同之处是使用了另一个COM接口来获取目录和文件的idl。
1、获取idl:
LPIShellLink pShellLink;
CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*) &pShellLink);
pShellLink->SetPath(pathTemp);
pShellLink->GetIDList(&pList);
2、打开目录并选中文件:
SHOpenFolderAndSelectItems(pList, 0, NULL, 0);