可执行程序当前路径

CString sPath;
 GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
 sPath.ReleaseBuffer ();
 int nPos;
 nPos=sPath.ReverseFind ('\\');
 sPath=sPath.Left (nPos);

 //CString lpszFile = sPath + "\\1.txt";


//方法二  (这种方法在打开文件时无效,会定位到打开文件所在目录)
char szDIR[100];
 GetCurrentDirectory(100,(LPTSTR) szDIR); 

在VC++中获取当前可执行程序路径,通常通过以下步骤实现,使用的是Windows API函数`GetModuleFileName`: 1. 包含头文件:首先在你的源代码中包含头文件`windows.h`,它包含了这个API函数。 ```cpp #include <windows.h> ``` 2. 调用函数:创建一个`LPCTSTR`(宽字符字符串类型)变量,用于存储返回的路径。然后使用`GetModuleFileName`函数,传入`NULL`作为第一个参数(表示当前模块),第二个参数是你的变量,用于存放结果。 ```cpp LPCTSTR lpPath = nullptr; DWORD dwSize = GetModuleFileName(NULL, lpPath, MAX_PATH); ``` 这里`MAX_PATH`是一个常量,表示最大允许的路径长度,通常不需要改变,但如果实际路径很长,可能需要动态分配更大的内存。 3. 检查错误并处理结果:`dwSize`会包含实际分配给路径的字节数,包括终止符`\0`。如果`dwSize == 0`,说明获取失败,可以检查错误代码。 ```cpp if (dwSize == 0) { // 处理错误,例如输出错误信息 TCHAR errMsg[MAX_PATH]; FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, NULL, GetLastError(), LANG_NEUTRAL, (LPTSTR)errMsg, 0, NULL); OutputDebugString(errMsg); } else { // 将lpPath转换成LPCTSTR,并添加反斜杠(\)以适应后续操作 TCHAR* fullPath = new TCHAR[dwSize + 1]; wcscpy_s(fullPath, dwSize + 1, lpPath); fullPath[dwSize] = '\0'; // 现在fullPath指向的就是当前可执行程序的完整路径 // ... } ``` 4. 清理内存:完成后记得释放之前分配的内存。 ```cpp delete[] fullPath; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值