【问题标题】:GetModuleFileNameEx - Is it possible to get the path in char* and NOT in TCHAR[]?GetModuleFileNameEx - 是否可以在 char* 而不是 TCHAR[] 中获取路径?
【发布时间】:2009-08-03 09:34:42
【问题描述】:

这是我的代码:

TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
GetModuleFileNameEx (hProcess, NULL, szProcessName, 
                     sizeof(szProcessName)/sizeof(TCHAR));

我需要char* 中的路径,而不是TCHAR[] 中的路径。不转换(WideCharToMultiByte)是否有可能?

谢谢...

【问题讨论】:

    标签: c++ winapi ascii


    【解决方案1】:

    GetModuleFileNameEx 只是一个宏。您可以将 GetModuleFileNameExA 用于 ANSI 版本。它将调用 GetModuleFileNameExW,然后在内部进行所有转换。

    但您应该确保模块文件名不包含 Unicode 字符。

    char szProcessName[MAX_PATH] = "<unknown>";
    GetModuleFileNameExA(hProcess, NULL, szProcessName, sizeof szProcessName);
    

    【讨论】:

    • 谢谢,但是为什么会抛出错误: // TCHAR szProcessName[MAX_PATH] = TEXT(""); char* szProcessName = ""; GetModuleFileNameExA (hProcess, NULL, szProcessName, MAX_PATH); printf("%s", szProcessName);
    • 如果您编辑原始帖子,可能更容易弄清楚您想说什么...
    • szProcessName 应该足够大以保留 MAX_PATH 个字符。
    • 未知,一开始你有一个数组。那是正确的。当您将基本类型更改为char 时,您还使其成为指针而不是数组。那是错误的。将其保留为数组。
    【解决方案2】:

    请注意,如果您不构建 Unicode 应用程序(即未定义 _UNICODE),则 TCHAR == char

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 2011-02-17
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      相关资源
      最近更新 更多