当前位置: 首页 > news >正文

【C++】动态导入Windows系统API的简单方法

源码

从chromium源码学习到的非常方便动态导入Windows系统API的方法,摘录在这里,方便查找。

FARPROC GetFunctionInternal(const wchar_t* library, const char* function)
{HMODULE module = LoadLibrary(library);if (!module) {return nullptr;}// Strip off any leading :: that may have come from stringifying the// function’s name.if (function[0] == ':' && function[1] == ':' && function[2] && function[2] != ':') {function += 2;}FARPROC proc = GetProcAddress(module, function);return proc;
}template <typename FunctionType>
FunctionType* GetFunction(const wchar_t* library, const char* function)
{return reinterpret_cast<FunctionType*>(GetFunctionInternal(library, function));
}#define GET_FUNCTION(library, function) \GetFunction<decltype(function)>(    \library, #function)

使用

巧妙之处在于用模板屏蔽了系统API的函数定义,直接通过模板提取

GET_FUNCTION(L"kernel32.dll", ::SetThreadDescription)
http://www.dtcms.com/a/341190.html

相关文章:

  • Docker复杂安装--最详细的MySQL主从复制与Redis集群安装、主从复制、主从扩容主从缩容实战版
  • 03-dockerfile
  • 8月7日国赛全真模拟!2025“华数杯”数学建模竞赛,常用模型及算法总结
  • 网络连接的核心机制
  • Python 数据可视化:Matplotlib 与 Seaborn 实战
  • [TryHackMe](知识学习)Hacking with PowerShell
  • 浅显易懂——Redis、SpringDataRedis
  • 充值系统开源版,支持对接码支付,支持三级分销
  • 深入解析 Containerd 的工作原理
  • K8S-Ingress资源对象
  • 【C2000常见问题】当板子处于强电噪声环境下,或带重载时C2000芯片的PWM发波会出现异常,导致炸管。
  • StarRocks学习4-查询优化与性能调优
  • 使用 FastAPI 的 WebSockets 和 Elasticsearch 来构建实时应用
  • 永磁同步电机谐波抑制算法(13)——传统预测控制与传统谐波抑制的碰撞
  • 【学习笔记】大话设计模式——一些心得及各设计模式思想记录
  • 372. 超级次方
  • 力扣hot100:最大子数组和的两种高效方法:前缀和与Kadane算法(53)
  • 【数据结构】递归与非递归:归并排序全解析
  • CreateRef和useRef
  • 继续记事本项目
  • 三轴云台之闭环反馈技术
  • MySQL数据库安全配置核心指南
  • 十二,数据结构-链表
  • BeyondWeb:大规模预训练合成数据的启示
  • 解决程序无响应自动重启
  • 高压柜无线测温:给智能化配电室装上“智能体温监测仪”
  • 前端基础知识操作系统系列 - 03(linux系统下 文件操作常用的命令有哪些)
  • C++ string(reserve , resize , insert , erase)
  • Clonezilla live 再生龙还原系统各个版本的不同
  • Sklearn 机器学习 房价预估 拆分训练集和测试集