GetModuleFileName()获取运行目录代码例子
时间: 2024-01-21 13:02:46 浏览: 24
下面是使用GetModuleFileName()函数获取运行目录的代码示例:
```c++
#include <iostream>
#include <Windows.h>
int main() {
char buffer[MAX_PATH];
GetModuleFileName(NULL, buffer, MAX_PATH);
std::cout << "The running directory is: " << buffer << std::endl;
return 0;
}
```
这段代码使用了Windows API中的GetModuleFileName()函数,它的第一个参数为NULL表示获取当前可执行文件的路径,第二个参数为一个char数组,用于存储路径字符串,第三个参数为数组的大小。最后输出获取到的路径字符串即可。
相关问题
vs2017 C++获取运行目录路径
在 Visual Studio 2017 中,你可以通过以下代码获取 C++ 程序运行时的目录路径:
```cpp
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
char path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);
string::size_type pos = string(path).find_last_of("\\/");
cout << "当前程序运行目录:" << string(path).substr(0, pos) << endl;
return 0;
}
```
其中 `GetModuleFileName()` 函数可以获取当前程序的文件路径,然后由于文件路径与程序运行时的目录路径不同,需要对文件路径进行处理,得到程序运行时的目录路径。
这里使用 `string::find_last_of()` 函数查找最后一个目录分隔符,然后使用 `string::substr()` 函数截取字符串,得到程序运行时的目录路径。最后输出即可。
需要注意的是,这里使用了 Windows.h 头文件,因为 Visual Studio 2017 是在 Windows 系统下运行的。如果你使用的是其他操作系统,可能需要使用不同的库或函数来获取程序运行时的目录路径。
GetModuleFileName
GetModuleFileName 是一个Windows API函数,用于获取指定模块的完整路径和文件名。它的函数原型如下:
```c++
DWORD GetModuleFileName(
HMODULE hModule, // 要获取文件名的模块句柄,如果为NULL,则返回当前进程的可执行文件名
LPTSTR lpFilename, // 接收文件名的缓冲区
DWORD nSize // 缓冲区大小
);
```
其中,hModule参数指定要获取文件名的模块句柄,如果为NULL,则返回当前进程的可执行文件名。lpFilename参数是一个指向接收文件名的缓冲区的指针,nSize参数指定缓冲区大小。函数返回值是实际写入缓冲区的字符数,不包括字符串结束符。
使用GetModuleFileName函数可以方便地获取当前进程或指定模块的文件路径和文件名,常用于获取程序所在目录或读取程序所在目录下的文件。