【发布时间】:2010-02-06 15:58:44
【问题描述】:
我遇到的问题是我为我的文件使用相对路径,所以当我使用“打开方式”方法将文件打开到我的程序中时,我的所有路径都被搞砸了(它会在我所在的文件夹中创建我的文件使用了这种“打开方式”。)
我如何检索我用来通过“打开方式”方法打开文件的 .exe 文件的完整路径?
编辑:我的主要功能:
int WINAPI WinMain( HINSTANCE hInstance, // Instance
HINSTANCE hPrevInstance, // Previous Instance
LPSTR lpCmdLine, // Command Line Parameters
int nCmdShow) // Window Show State
{
【问题讨论】:
-
我的猜测是您使用的是某种框架,而不是将 C++ Windows 应用程序写入原始 Windows API。哪一个?这对答案很重要。 (如果您正在完全由您自己编写,则它是您的
main函数中的argv[0]。) -
确实:/ 我更新了我的主函数,除了命令行之外,我没有看到任何其他参数......而且它甚至没有从文件名中去掉引号,我不得不自己去掉它。 . 也许我尝试使用 SDL main,但我想知道是否有可能在 WINAPI winmain() 上执行此操作。
-
当心。你真的不应该在你的 EXE 所在的文件夹中创建文件。您应该将该文件夹视为只读;尽管自 Windows NT 以来一直如此,但操作系统在每个新的 Windows 版本中都更严格地执行它。使用临时目录 (GetTempPath) 或“应用程序设置”目录 (SHGetFolderName),这样管理员在安装您的程序时就不必做出特殊的例外。
-
@Newbie:实际上,真正的,最低级别的
main(字面意思是函数的名称;WinMain是另一回事),参数是int argc, char * argv[]和@ 987654327@ 将是可执行文件的路径。但是(刷新失败的记忆)它不能保证被规范化,所以这对你没有用 - 不像下面两个实际 useful 答案。 :-) -
“你真的不应该在你的 EXE 所在的文件夹中创建文件” 那么我应该如何创建一些应该被我的用户轻松复制的数据文件?像地图等...我不会把它们放在迷宫般的窗户路径中,我讨厌找到那些路径。每个 Windows 版本都有自己的路径。当你重新安装windows时,你会丢失所有东西,但是如果文件在程序文件夹中,你不会丢失它们(假设你没有在windows分区中安装程序......)
标签: c++ windows command-line