怎么打开文件夹呢?

紫影 2010-12-16 10:48:17
想在一个小程序里面加入一个打开文件夹的功能,就是类似迅雷下载完毕后,打开下载目录那样的功能。试过运行explorer.exe并传递文件夹路径作为参数,那样虽然可以打开文件夹,但系统增加了一个explorer.exe的进程,请问有没有什么方法可以不用增加进程而打开文件夹呢,望大家不吝赐教,
...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
haogeai123 2010-12-16
  • 打赏
  • 举报
回复
SHOpenFolderAndSelectItems 函数
sduxiaoxiang 2010-12-16
  • 打赏
  • 举报
回复
SHBrowseForFolder
smartlean 2010-12-16
  • 打赏
  • 举报
回复

#include <string>
#include <iostream>
#include <shlobj.h>
#include <tchar.h>
using namespace::std;

int main() {
string strInitFolder = _T("");
TCHAR szPath[MAX_PATH] = _T("");
LPMALLOC lpMalloc = NULL;
string strFolder = _T("");
BROWSEINFO sInfo;
LPITEMIDLIST lpidlBrowse = NULL;

if (::SHGetMalloc(&lpMalloc) != NOERROR)
return 0;

::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
sInfo.pidlRoot = 0;
sInfo.pszDisplayName = szPath;
sInfo.lpszTitle = _T("请选择您需要的目的文件夹:");
sInfo.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS;
sInfo.lpfn = NULL;

// 显示文件夹选择对话框
lpidlBrowse = ::SHBrowseForFolder(&sInfo);

if (lpidlBrowse != NULL) {
// 取得文件夹名
if (::SHGetPathFromIDList(lpidlBrowse, szPath)) {
strFolder = szPath;
cout<<_T("选择的文件夹为:")<<endl;
cout<<strFolder<<endl;
}

}

if (lpidlBrowse != NULL) {
::CoTaskMemFree(lpidlBrowse);
}
lpMalloc->Release();
return 1;
}
紫影 2010-12-16
  • 打赏
  • 举报
回复
// 求指教...

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧