2012-05-13 19 views
4

首先,我想说的是,我并不是指完整的路径,GetModuleFileName或argv [0]会产生什么样的结果。有没有比在最后一个反斜杠之前解雇所有东西更明智的解决方案?提取当前的可执行文件名

+0

你在哪个平台上?我想Windows? –

+2

在最后一个路径分隔符后采取一切行为有什么问题?我自己,我只是在argv [0]上使用我自己写的基本名称函数。 –

+0

还有路径功能。 – chris

回答

13

首先,您想通过调用GetModuleFileNameNULL作为模块句柄来获取可执行文件的完整路径。然后致电PathFindFileName以提取文件名称组件。

事实上,GetModuleFileNameargv[0]之间存在差异。后者是用于启动过程的名称。它可能缺少完整路径,但更重要的是,它可能会丢失.exe扩展名。如果你想知道实际的文件名,那么你需要使用GetModuleFileName

+1

这就是我试图找到的。我发现它真的很有趣,但是这个例子如何使用'void main'。严重的是,微软? – chris

+1

微软被允许这样做,因为他们编写了编译器。因此,他们可以使用编译器特定的扩展,您和我(作为公民之后的好标准)不能。 –

0

如果你使用.NET,那么here就是答案。但内部可能会打电话给GetModuleFileName

+0

我不使用.NET。这是Windows api项目。 – 0x6B6F77616C74

+0

好的。我看到你已经得到了答案,我只会赞扬它。 –

相关问题