作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在修改一个开源 GUI(用 c 编写)以将新菜单项添加到托盘应用程序。新的菜单项在程序根目录 c:\program files 目录中执行一个文件 (update.exe)。我正在使用 shellexec(),它在 x86 上运行良好,但由于 x64 上的路径不同 - c:\program files (x86),它无法加载。我想使用一些像 %programfiles% 这样的环境变量的效果。对此有什么优雅的解决方案?
或者,我确实可以更改 update.exe 文件的存储位置。将它放在“程序文件”中似乎是最合乎逻辑的。对于上面的问题,它应该放在程序文件之外吗?如果是,在哪里?
最佳答案
您可以使用 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
(警告!未经测试!)
关于c - shellexec 和 c :\program files - x86 and x64 portability,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4071379/
我没有在帮助中找到有关 Shellexec 和 Exec 之间差异的详尽解释。是个 Shellexec('','program.exe',params,'',SW_HIDE,ewWaitUntilTe
我正在修改一个开源 GUI(用 c 编写)以将新菜单项添加到托盘应用程序。新的菜单项在程序根目录 c:\program files 目录中执行一个文件 (update.exe)。我正在使用 shell
我是一名优秀的程序员,十分优秀!