我需要根据可执行文件的名称更改应用程序的功能。没有什么大的变化,只是改变了显示的字符串和一些内部标识符。该应用程序是用本机代码和.Net C++-CLI代码混合编写的。
我已经研究过两种方法,一种是在Win32中解析GetCommandLine()函数,另一种是在.Net中填充AppDomain和其他东西。但是,使用GetCommandLine并不总是有效,因为当从调试器运行时,命令行是空的。而.Net AppDomain的东西似乎需要大量的填充。
那么,在C++/CLI中确定可执行文件名称的最好/最简单/最有效的方法是什么呢?(我有点希望我错过了.Net中提供的一些简单的东西。)
编辑:我应该提到的一件事是,这是一个使用C++/CLI的Windows GUI应用程序,因此无法访问传统的C风格的主函数,它使用Windows WinMain()函数。
发布于 2008-09-24 02:27:32
Ferruccio的答案是好的。下面是一些示例代码:
TCHAR exepath[MAX_PATH+1];
if(0 == GetModuleFileName(0, exepath, MAX_PATH+1))
MessageBox(_T("Error!"));
MessageBox(exepath, _T("My executable name"));
发布于 2008-09-24 01:33:12
对main
使用argv
参数
int main(int argc, char* argv[])
{
printf("%s\n", argv[0]); //argv[0] will contain the name of the app.
return 0;
}
您可能需要扫描字符串以删除目录信息和/或扩展名,但名称仍在那里。
发布于 2008-09-24 06:54:51
使用__argv
https://stackoverflow.com/questions/124886
复制相似问题