获取当前文件夹中可执行文件的路径 C++

Ell*_*iot 2 c++ winapi path

我正在尝试获取该程序所在文件夹中 exe 文件的路径。但我不知道该怎么做,我做了类似的事情,但它只获取当前的程序路径,而且我不知道如何替换我的程序和我想要获取路径的程序之间的文件名。

所以你能简单地帮助我在该程序所在的同一文件夹中获取 exe 的路径(我知道该 exe 的名称)...

    char fullp[MAX_PATH];
    char selfp[MAX_PATH] = "..//myprogram.exe"; 
    char otherprogram[MAX_PATH] = "//test.exe";

    DWORD szPath;
    szPath = GetModuleFileName(NULL, selfp, sizeof(selfp));
Run Code Online (Sandbox Code Playgroud)

Rem*_*eau 5

Win32 API 有一大堆可用的路径处理函数

例如,一旦您从 获取了调用进程的完整路径GetModuleFileName(),您可以使用PathRemoveFileSpec()删除文件名,只留下文件夹路径:

char selfdir[MAX_PATH] = {0}; 
GetModuleFileNameA(NULL, selfdir, MAX_PATH);
PathRemoveFileSpecA(selfdir);
Run Code Online (Sandbox Code Playgroud)

然后使用PathAppend()PathCombine()将不同的文件名附加到该路径:

char otherprogram[MAX_PATH] = {0};
lstrcpyA(otherprogram, selfdir);
PathAppendA(otherprogram, "test.exe");
Run Code Online (Sandbox Code Playgroud)

char otherprogram[MAX_PATH] = {0};
PathCombineA(otherprogram, selfdir, "test.exe");
Run Code Online (Sandbox Code Playgroud)

  • @CodyGray OP 使用 Ansi 缓冲区。由于我们不知道缓冲区的用途,因此我没有更改它们。 (2认同)