本站已接入国内中文版 ChatGPT 镜像,欢迎大家前往体验《 国内中文 ChatGPT 》
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ 面向对象
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ 设计模式
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ STL
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++ 技术杂谈
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++ 常用函数
一.GetModuleFileName 函数
GetModuleFileName 函数返回当前进程已加载 可执行文件或 DLL 文件的完整路径名(以’\0’终止),该模块必须由当前进程地址空间加载。
DWORD WINAPI GetModuleFileName(
_In_opt_ HMODULE hModule, //应用程序或DLL实例句柄,NULL则为获取当前程序可执行文件路径名
_Out_ LPTSTR lpFilename, //接收路径的字符串缓冲区,内存指针
_In_ DWORD nSize //接收路径的字符缓冲区的大小
);
二.获取指定 exe 和 dll 路径
char exeFullPath[MAX_PATH]={0};
//如果第一个参数为空,默认获取指定exe路径
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
//输出:C:\Users\xxx\Desktop\coder\\my.exe
char dllFullPath[MAX_PATH]={0};
//获取指定文件路径路径
GetModuleFileName(“my.dll”,dllFullPath,MAX_PATH);
//输出:C:\Users\xxx\Desktop\coder\\my.dll
三.获取指定 exe 和 dll 目录
可以通过 strrchr 函数去掉 GetModuleFileName 获取到的 exe 或者 dll 路径后缀,得到目录路径,示例如下:
//方案一:
*strrchr( exeFullPath, '\\') = 0;
//输出:C:\Users\xxx\Desktop\coder\\
//方案二:
strrchr( exeFullPath, '\\')[0]= 0;
//输出:C:\Users\xxx\Desktop\coder\\
//方案三:
*(strrchr( exeFullPath, '\\')+1) = 0;
//输出:C:\Users\xxx\Desktop\coder\\
//方案四:
strrchr( exeFullPath, '\\')[1]= 0;
//输出:C:\Users\xxx\Desktop\coder\\
四.完整代码
char exeFullPath[MAX_PATH]={0};
//获取exe路径
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
//接下来把xxx.exe文件名去掉,有以下四种:
*strrchr( exeFullPath, '\\') = 0;
strrchr( exeFullPath, '\\')[0]= 0;
*(strrchr( exeFullPath, '\\')+1) = 0;
strrchr( exeFullPath, '\\')[1]= 0;
五.猜你喜欢
- C语言 数组下标越界和内存溢出区别
- C语言 使用指针遍历数组
- C语言 指针和数组区别
- C语言 指针数组和数组指针区别
- C语言 野指针
- C语言 函数值传递和址传递
- 函数不定长参数
- C语言 函数指针
- C语言 指针函数
- C语言 回调函数 callback
- C语言 #pragma once
- C语言 #include <> 与 #include “” 区别
- C语言 const 修饰函数参数
- C语言 const 和 define 区别
- C语言 va_start / va_end / va_arg 自定义 printf 函数
- C语言 main 函数参数 main(int argc, char *argv[])
- C语言 结构体struct简介(一)
- C语言 结构体struct定义和使用(二)
- C语言 结构体struct数组(三)
- C语言 结构体struct指针(四)
- C语言 结构体struct成员函数(五)
- C语言 结构体struct嵌套(六)
- C语言 结构体struct值传递和址传递(七)
- C/C++ error: cannot assign to non-static data member within const member function ‘xxxx’
- C++ 关于类中 const 的使用
- C/C++ =delete
- C/C++ 条件编译 #ifdef
- C/C++ error C2065: “M_PI”: 未声明的标识符
- C/C++ error C2027: 使用了未定义类型“std::tuple”
- C/C++ vs 没有匹配 if 的非法 else 问题解决办法
- C/C++ Visual studio 中文注释导致编译不能通过
- C/C++ error C2589: “(”: “::”右边的非法标记
- C/C++ error:表达式是必须修改的左值
- C/C++ GetModuleFileName 获取指定 exe 和 dll 路径
本站已接入国内中文版 ChatGPT 镜像,欢迎大家前往体验《 国内中文 ChatGPT 》
暂无评论内容