所以我正在寻找一段代码,允许我搜索正在执行的文件的路径。例如,我正在做一个用于pendrives的自动运行程序(例子)但我不知道知道它是否会以D:,F:,G:或其他任何方式结束,所以程序会搜索它自己的路径并根据使用某些'if'语句找到的路径打开另一个文件。
这就是我的想法:
#include <stdlib.h>
#include <iostream>
using namespace std;
int main () {
// Insert 'search path' code and needed variables here.
if (-ThePath- == "d:\\AutoRun.exe")
{
system ("d:\\MyFolder\\OtherProgram.exe");
}
else if (-ThePath- == "f:\\AutoRun.exe")
{
system ("f:\\MyFolder\\OtherProgram.exe");
}
else if (-ThePath- == "g:\\AutoRun.exe")
{
system ("g:\\MyFolder\\OtherProgram.exe");
}
else
{
cout << "An error ocurred.\n";
cout << "Press enter to exit...\n";
cin.get();
};
return 0;
}
有没有办法可以做到这一点?
答案 0 :(得分:8)
GetModuleFileName
:文档here
EDITED - Pedro,微软的示例代码处理了很多事情。要获取文件路径,您只需要:
TCHAR szPath[MAX_PATH];
if( !GetModuleFileName( NULL, szPath, MAX_PATH ) ) {
// handle error in GetModuleFileName
} else {
// now, szPath contains file path
};
答案 1 :(得分:2)
在标准C ++中,argv [0]包含可执行文件的名称。对于以正常方式调用的程序,这将是Windows上可执行文件的路径。