c++中知道打开的文件夹的名称,如何得到文件夹全路径?

例如:当前打开有a和b两个文件夹,关闭进程explorer后,两个文件夹自然也关闭了,重新激活explorer后,准备软件打开a和b这两个文件夹(不是手动打开),所以必须要得到a和b的全路径,俺伤透脑筋只想到读内存解析出a和b的全路径,但效率太低,请指点个好方法,先拜谢了!
注:路径搜索也是效率低,而且遇到同名不同路径的文件夹时怎么办?
(俺有点穷,供分10)
补充:好多函数得到的都是当前运行的主程的全路径,而非已经最小化到任务栏中的那些已打开的文件夹的全路径。 如:可以得到任务栏中显示的已打开文件夹的窗口句柄、标题、类名等,通过文件夹窗口句柄得到的也只是同其标题一样的文件夹名,而非其全路径。
结语:虽然问题未解决,但还是要感谢两位的提示帮助!
又搜了N多次,得到了一种较好的解决思路:获得已打开文件夹窗口句柄,得到其子目录窗口句柄,读取其子目录窗口地址栏值,解析此值,得到目标文件夹的全路径。(还没有具体的实现代码)

第1个回答  2010-01-21
首先要include这个
#include <direct.h>

然后
char *curDir;

curDir = (char *)malloc(300 * sizeof(char));//300是我自己定的
if (curDir == NULL)
{
printf("Can not malloc curDir !\n");
getch();
exit(0);
}
curDir = _getcwd(curDir, 300);

这样返回的curDir 就是全路径
第2个回答  2010-01-24
搂上的300可以考虑用MAX_PATH宏代替

c++中知道打开的文件夹的名称,如何得到文件夹全路径?
curDir = _getcwd(curDir, 300);这样返回的curDir 就是全路径

怎么用C\\C++实现对 一个文件夹所有文件的遍历
CFileFind finder;BOOL bWorking = finder.FindFile(%%1+"\\\\*.*");while (bWorking){ bWorking = finder.FindNextFile();if (finder.IsDirectory()){ \/\/finder.GetFilePath();所有文件夹 } else if(finder.IsDots()){} else { \/\/finder.GetFilePath();所有文件 } } ...

c\/c++全盘查找一个文件,然后确定这个文件夹所在目录,然后释放一个文件到...
可以调用WIN32的API, FindFirstFile\/等实现 include<stdio.h> include "windows.h"int main(int argc, char *argv[]){ WIN32_FIND_DATA FindFileData;HANDLE hFind;printf ("Target file is %s.\\n", argv[1]);hFind = FindFirstFile(argv[1], &FindFileData);\/\/注意目录的形式后面要有*....

急~!!!如何用C\/C++ 读取文件夹中所有文件(如.csv文件)
struct _finddata_t c_file;long hFile;if( (hFile = _findfirst( LPCTSTR(pathWild), &c_file )) == -1L){ MessageBox("选择目录下并无csv文件,请确认");_findclose(hFile);return;} else { do { \/\/这里就是文件名,加上之前的路径就是完整路径了 CString strFileName = c_file.na...

C++:怎样打开一个文件夹下一系列的文件夹,每个文件夹包含一个文件_百度...
CFileFind cff;CString fstr="C:\\\\page\\\\*.*"\/\/所以用文件和文件夹,查找网页可用*.html BOOL IsMore=cff.FindFile(fstr);while(IsMore)\/\/循环遍历当前目录 { pFile=fopen(cff.GetFilePath(),"rb");\/\/对打文件进行读取 IsMore=cff.FindNextFile();} 以上得到当前目录,那么你就完全可以用...

C++怎样遍历文件夹然后取得目录下的文件名
dirent *ptr; if ((dir=opendir("D:\\\\rain")) == NULL) { perror("Open dir error..."); exit(1); } while ((ptr=readdir(dir)) != NULL) { printf("d_name:%s\\n",ptr->d_name); } closedir(dir);} ...

C++怎么读取某文件夹中所有的.txt文件
include <iostream> \/\/ std::cout \/\/dirpath为你要查找的文件件绝对路径,如txt在D盘文件夹名为1的情况下,即输入:\/\/std::string = "D:\\\\1\\\\";\/\/std::vector<std::string> filepaths\/\/为所有txt的文件名称,这是输出参数 \/\/std::string regular_expression_input = "*.txt";\/\/你写一...

怎么用标准C\/C++打开windows explorer,选择文件,获取文件或文件夹路径...
shellecute函数方法实现打开explorer,及打开一个目录,进行选择文件,获取文件或文件夹路径 GetCurrentDirectory 在一个缓冲区中装载当前目录 GetFullPathName 获取指定文件的完整路径名 看这样API函数的使用方法实现你所需要的功能。

在C\/c++程序源代码中指定打开某个文件
比如打开d盘下的kill.cmd就是system("d:\\\\kill.cmd");总之每次遇到斜杠要打两个 这个方法的缺点是要调用dos或类dos的内核,如果是windows界面程序设计的话运行时会闪过一个黑框影响不好,如果本来就是黑框的控制台程序的话没影响 其他方法我是没发现 桌面的文件同理,桌面也是有一个路径的,不知道...

c++中的工程类型问题
选择“控制台应用程序”作为项目类型,并将应用程序的名称更改为“列出文件”。默认位置应是恰当的,但您始终可以根据需要输入新路径。单击“确定”。Visual C# 速成版为您的项目创建一个以项目标题命名的新文件夹,然后打开 Visual C# 速成版 主窗口,包括代码窗格,您将在其中输入和编辑构成应用程序的 C# 源代码。

相似回答
大家正在搜