获取应用程序窗口的完整目录

Get full directory of application Windows

本文关键字:应用程序 窗口 获取      更新时间:2023-10-16

可能的重复项:
获取可执行文件的路径

我在C++上有一个应用程序,如何获取我的完整目录(此应用程序的文件存在.exe位置)?

编辑: 操作系统 - 视窗

Windows:

WCHAR path[MAX_PATH];
GetModuleFileName(NULL, path, ARRAYSIZE(path));

Linux:

char buffer[MAX_PATH];
readlink("/proc/self/exe", buffer, MAX_PATH);
没有

好的跨平台解决方案,但是,您可以在所有主要平台上执行此操作:

  • 在 Linux 上:读取/proc/self/exe特殊文件

char buf[PATH_MAX];
ssize_t len;
if ((len = readlink("/proc/self/exe", buf, bufsize)) != -1) {
    // buf contains the path
} else {
    // error
}
  • 在 Mac OS X 上:使用_NSGetExecutablePath()功能(从 man 3 dyld 开始)

#include <stdint.h>
#include <limits.h>
uint32_t size = PATH_MAX;
char buf[PATH_MAX];
if (_NSGetExecutablePath(buf, &size) != -1) {
    // buf now contains the path
} else {
    // error
}
  • 在 Windows 上:调用GetModuleFileName()NULL作为句柄。

#include <windows.h>
char buffer[1024];
if (GetModuleFileName(NULL, buffer, sizeof(buffer)) != 0) {
    // buffer contains the path
} else {
    // error
}