常见的选中文件方法使用explorer.exe +"select,C:\\1.txt" 选中文件。但是,多次选择会创建多个explorer进程,打开多个窗口(即使是同级目录)。
使用SHOpenFolderAndSelectItems可以使用默认的explorer完成该操作;且多次打开同一目录选中文件,只会显示一个文件夹窗口。代码如下
void CSelectItemDlg::OnBnClickedButton1()//一个按钮响应函数
{
// TODO: 在此添加控件通知处理程序代码
LPSHELLFOLDER pDesktopFolder;
if(SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))
{
LPITEMIDLIST pIDList;
LPITEMIDLIST pidl[2];
ULONG chEaten;
ULONG dwAttributes;
HRESULT hr;
TCHAR* m_strFilePath = _T("D:\\MTV\\1.mkv");
hr = pDesktopFolder->ParseDisplayName(
NULL, NULL, m_strFilePath, &chEaten, &pidl[0], &dwAttributes);
//设置第二个要选中的东西
m_strFilePath = _T("D:\\MTV\\2.mkv");
hr = pDesktopFolder->ParseDisplayName(NULL,
NULL,
m_strFilePath,
&chEaten,
&pidl[1],
&dwAttributes);
m_strFilePath = _T("D:\\MTV");
hr = pDesktopFolder->ParseDisplayName(NULL,
NULL,
m_strFilePath,
&chEaten,
&pIDList,
&dwAttributes);
if (FAILED(hr))
{
pDesktopFolder->Release();
return ;
}
CoInitialize(NULL);
SHOpenFolderAndSelectItems(pIDList, 2, (LPCITEMIDLIST *)pidl, 0);
}
}
原网址: http://hi.baidu.com/wangxu198709/item/f585e0db9b5be33de2108f60