注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

程序路径相关函数  

2014-07-10 16:10:30|  分类: Windows编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.获取和设置程序当前目录

有两种方法,一种是,对于有参数的main函数,可以使用第二个数组的第一个元素,获取执行程序的绝对路径,另一个方法就是Windows函数GetCurrentDirectory,示例代码如下:

#include <stdlib.h>
#include <stdio.h>
#include "windows.h"

int main(int argn,char* argv[])
{
    char buffer[MAX_PATH]="";
    GetCurrentDirectoryA(MAX_PATH,buffer);
    printf("%s\n",argv[0]);
    printf("%s\n",buffer);
    return 0;
}
与GetCurrentDirectory函数对应的则是SetCurrentDirectory函数,用于设置进程的当前工作目录,函数原型为:
BOOL WINAPI SetCurrentDirectory(LPCTSTR lpPathName);

2. 获取模块文件名

函数GetModuleFileName获取模块的文件名,当第一个参数为NULL时获取当前模块的路径,注意这里的模块可能是.exe文件,也可能是.dll文件,该函数的原型为:

DWORD WINAPI GetModuleFileName(HMODULE hModule,LPTSTR lpFilename,DWORD nSize);
下面的测试代码将先获取kernel32.dll模块的路径,然后获取当前模块的路径。
#include <stdlib.h>
#include <stdio.h>
#include "windows.h"

int main(int argn,char* argv[])
{
    char szKernel32[]="kernel32.dll";
    char szFileName[MAX_PATH]="";
    HMODULE hKernel32=LoadLibraryA(szKernel32);
    if(hKernel32==INVALID_HANDLE_VALUE)
        return -1;
    GetModuleFileNameA(hKernel32,szFileName,MAX_PATH);
    printf("%s\n",szFileName);
    GetModuleFileNameA(NULL,szFileName,MAX_PATH);
    printf("%s\n",szFileName);
    return 0;
}
  评论这张
 
阅读(412)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016