微软 VC++ 常用API汇总

3 篇文章 0 订阅
1 篇文章 0 订阅

GetModuleFileName()

含义:获取当前进程已加载模块文件的完整路径,该模块必须由当前进程加载。

API 说明

DWORD WINAPI GetModuleFileName(
    _In_opt_  HMODULE hModule,
    _Out_     LPTSTR lpFilename,
    _In_      DWORD nSize
);


DWORD, 如果执行成功,返回复制到lpFileName的实际字符数量;零表示失败。使用GetLastError可以打印错误信息。


参数说明:

(1)hModule Long

    一个模块的句柄。可以是一个dll模块,或者是一个应用程序的实例句柄。如果该参数为NULL,该函数返回该应用程序全路径。


(2)lpFileName String

   指定一个字符串缓冲区,要在其中容纳文件的用NULL字符中止的路径名,hModule模块就是从这个文件装载进来的。


(3)nSize Long

  装载到缓冲区lpFileName的最大字符数量。


GetModuleFileNameEx()

含义:可以获取另一个已加载模块的文件路径。


#include 
    
    
     
     
#include 
     
     
      
      

using namespace std;
int main(char *argc, char argv[])
{
	
	//1.获取exe执行的全路径
	TCHAR szPath[MAX_PATH];
    if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )
    {
        cout << "GetModuleFileName failed" << GetLastError() << endl;
        return FALSE;
    }
	//需要对 TCHAR szPath 转换成为 CString strDir
	CString strDir = szPath;
	

	
	//输出
	wcout.imbue(locale("chs"));//输出中文
	wcout << "The path is : " << strDir.GetString()<< endl;
	

	
	//2.截取前部字符串,修改路径
	int nPos = strDir.ReverseFind(_T('\\'));
	if(nPos == -1)
	{
		cout << "Can not find '\\' " << endl;
		return FALSE;
	}
	strDir = strDir.Left(nPos + 1);
	strDir += _T("SuperLog.ini");
	

	
	//输出
	wcout << "The NEW path is : " << strDir.GetString() << endl;
	
	return TRUE;
}
/*
如果想获得某个正在运行的EXE或者DLL的全路径可以这样写代码
GetModuleFileNameEx(hProcess,hInst,lpFile,MAX_PATH);//注意下缓冲区就行了。
*/

     
     
    
    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值