惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
人人都是产品经理
人人都是产品经理
小众软件
小众软件
博客园 - Franky
WordPress大学
WordPress大学
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
博客园 - 【当耐特】
IT之家
IT之家
G
Google Developers Blog
J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
有赞技术团队
有赞技术团队
V
Visual Studio Blog
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
GbyAI
GbyAI
雷峰网
雷峰网

博客园 - 迷失天堂

映射模式 vc++入门宝典 图象的渐显/渐隐 关于:error LNK2001:unresolved external symbol F11可以切换浏览器状态 const用法 Spy++的用途 VC界面开发,我的一些小知识点 inline函数 在VC中启动另外一个程序(.exe、...)方法 二值图像跟踪曲线程序 在MFC程序中使用VC Components visual c++键盘快捷键大全 在VC中实现扩展广告条 马骏 解决Windows 程序界面闪烁问题的一些经验 OpenGL FAQ CString 操作指南 新的Win32控件(转自:http://www.lzu.edu.cn/netteach/jiaochen/vc++5.0/vc++5.0/chap6/chap6_2.htm) 好用的快捷键推广
Windows 取得程序运行的路径
迷失天堂 · 2005-05-14 · via 博客园 - 迷失天堂

 可能你的程序会移植到别的系统,或者别的目录下,而在你的程序中要动态取得当前程序运行的路径,试一试下面的方法:
1,
一个办法是在一启动的时候用 GetCurrentDirectory获得启动时的目录,这个目录在许多情况下就是程序所在目录,但用户可以通过修改快捷方式中的设置启动目录。
    另一个办法是调用__argv[0],如
    strcpy(filename, __argv[0]);
    __argv[0]包括本程序的路径和EXE文件名,你可以从中得到程序路径。这种方法不受快捷方式中的设置影响。

2,可以用这个API试试看:
     GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1), MAX_PATH);
    strPath是你自己定义的CString类型变量,用来存储执行程序路径,一般来说,取得路径后你还要在后边加上“\\”才行。

比如:

TCHAR exeFullPath[MAX_PATH];
    
CString strPath;

    
GetModuleFileName(NULL,exeFullPath,MAX_PATH);

    
strPath=(CString)exeFullPath;

    
int position=strPath.ReverseFind('\\');

    
strPath=strPath.Left(position+1);
再如:
TCHAR FilePath[MAX_PATH];
    
GetModuleFileName(NULL,FilePath,MAX_PATH);
    
(_tcsrchr(FilePath,'\\'))[1] = 0;
    
lstrcat(FilePath,_T("MY.ini"));

3,  使用API的GetCurrentDirectory函数可以获得当前目录。

上面的方法我测试以后出结果