GetCurrentDirectory 和GetModuleFileNamed的区别

来源:互联网 发布:诱导源码 编辑:程序博客网 时间:2024/06/08 14:39

转载自:http://blog.csdn.net/buaalei/article/details/5211422


一 

DWORD GetCurrentDirectory(
  DWORD
 nBufferLength,
  LPTSTR
 lpBuffer
);

The GetCurrentDirectory function retrieves the current directory for the current process.

GetCurrentDirectory返回当前进程的当前目录,并不一定返回你的应用程序的目录。如果你在应用程序中调用了打开文件对话框,你选择了一个文件,那么,这个文件所在的目录就成了当前进程的当前目录了。

Parameters

nBufferLength: 接收保存路径的字符串缓存长度, 缓存必须有一个保存结束的空字符的位置.

lpBuffer:指向接收字符串的缓存,收到的非空字符串指定了当前目录的绝对路径.




DWORD GetModuleFileName(
  HMODULE
 hModule,
  LPTSTR
 lpFilename,
  DWORD
 nSize
);
GetModuleFileName
 函数指定当前进程模块的路径.它仅仅操作当前进程下的模块.如果想获取其他进程下的模块信息, 则需使用 GetModuleFileNameEx 函数.

 

Parameters

hModule:模块的句柄,或者设置为NULL表示当前模块。

lpFilename:保存路径的缓冲区。

nSize:缓冲区的大小。


三 例子

例子:

 TCHAR strExePath[_MAX_PATH];
 GetModuleFileName(NULL,strExePath,_MAX_PATH);

 PathRemoveFileSpec(strExePath);

 

如果当前执行程序的位置为c:/test.exe,GetModuleFileName获取的strExePath即为c:/test.exe,通过去掉名称函数最终获得的strExePath为c:。(注意PathRemoveFileSpec 系统API函数调用时必须包含#include  "Shlwapi.h"作为头文件)

 TCHAR strExePath[_MAX_PATH];
 GetCurrentDirectory(_MAX_PATH, strExePath);

 获取当前的系统目录,可能是c:也可能是其他值。




阅读全文
0 0
原创粉丝点击