【问题标题】:What happened to _pgmptr?_pgmptr 发生了什么?
【发布时间】:2014-05-09 20:53:49
【问题描述】:

我一直使用_pgmptr,它是Windows 提供的char*,它提供了可执行文件的确切完整路径。但是,在最近更新 MinGW 之后,它似乎被定义为 NULL 。有没有其他方法可以获得完整的可执行路径,没有它的名字(比如代替C:\program.exe 只是C:\ 就可以了我正在做的事情)?

我可以使用独立于平台的方式或特定于 Windows 的方式,只要它是可靠的。

【问题讨论】:

  • 可以使用argv[0](可能需要复制到全局变量中)
  • 就是这样,不过... argv[0] 可能是其他值,具体取决于程序是从命令行启动还是从资源管理器启动。
  • 虽然在手动调用 exec 或类似名称时可以在 argv[0] 中添加完全不同的内容),但我相信它适用于资源管理器启动和命令行启动的应用程序。
  • @MatsPetersson:不,如果您从命令行启动程序,argv[0] 将只是在命令行中输入的任何内容。通常这意味着只是可执行文件的名称,没有路径,没有扩展名。

标签: c++ windows path


【解决方案1】:

GetModuleFileName是检索程序路径和名称的API函数。

【讨论】:

  • 该函数的文档甚至提到了_pgmptr;虽然我不知道为什么它不可用。
  • 是的,从您链接的那个页面“全局变量 _pgmptr 会自动初始化为可执行文件的完整路径,并可用于检索可执行文件的完整路径名。”在注释部分。 msdn.microsoft.com/en-us/library/tza1y5f7.aspx 表示已弃用。
猜你喜欢
  • 2016-02-28
  • 2014-02-28
  • 2010-10-02
  • 2020-03-14
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
相关资源
最近更新 更多