我正在修改一个开源GUI(用c编写),以便向托盘应用添加新的菜单项。新的菜单项在c:\ program files目录中的程序根目录中执行文件(update.exe)。我使用shellexec(),它在x86上工作正常,但由于x64 - c:\ program files(x86)上的路径不同,因此无法加载。我想使用像%programfiles%这样的环境变量的效果。什么是优雅的解决方案?
或者,我可以更改update.exe文件的存储位置。把它放在'程序文件'中似乎是最合乎逻辑的。对于上面的问题,它应该超出程序文件吗?如果是这样的话?
答案 0 :(得分:1)
您可以使用GetModuleFileName()检索可执行文件的完整路径。然后你只需要从最后剪切文件名,你将拥有完整的目录路径。
这样的事情应该是诀窍:
TCHAR szPath[MAX_PATH];
LPTSTR szFileName;
GetModuleFileName(g_hInstance, szPath, sizeof(szPath)/sizeof(TCHAR));
szFileName = _tcsrchr(szPath, TEXT("\\"));
*szFileName = TEXT('\0');
// szPath now contains the path
(警告!未经测试!)