获取当前句柄的4种方法

获取当前句柄的4种方法

获取当前句柄的4种方法

最新推荐文章于 2025-11-03 16:10:32 发布

原创

最新推荐文章于 2025-11-03 16:10:32 发布

·

2.6w 阅读

·

3

·

12

·

CC 4.0 BY-SA版权

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

文章标签:

#获取当前句柄的4种方法

C/C++

同时被 2 个专栏收录

77 篇文章

订阅专栏

win32

24 篇文章

订阅专栏

本文介绍了在Windows环境下获取当前进程句柄的四种实用方法,包括使用win32API函数、声明全局变量句柄类型、获取函数句柄以及利用WinMain函数参数等。

我们经常会获取当前进程的进程句柄,那么获取进程句柄的方法都有哪些呢?下面是总结的三种方法。

注意:句柄其实就是应用程序的其实地址。

方法1.

使用win32 API函数实现该功能。如下代码所示:

#include

#include

int main()

{

HMODULEhCurrent_Module =GetModuleHandle(NULL);//这个句柄参数为NULL就是当前程序的起始地址

_tprintf(L"%0x\n", hCurrent_Module);

me);

_gettchar();

return0;

}

输出结果为:

250000

这样就会获取当前进程的句柄,API函数GetModuleHandle如果参数为NULL就是当前程序的起始地址,如果传入其他文件,比如kernel32.dll那么他的地址就会变成该动态库的起始地址。

方法2:

声明全局变量的句柄类型。如下代码所示:

#include

#include

extern "C" HANDLE __ImageBase;

int main()

{

_tprintf(L"%0x\n", &__ImageBase);

_gettchar();

return0;

}

输出结果:

250000

这个结果与方法1的结果一样说明此方法的可行性,是完全可以使用的。

方法3:

方法三针对的是一个函数如何获取他的句柄,比如以下:

void fun(HMODULE *hModule)

{

GetModuleHandleEx(

GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, //标志

(PCTSTR)fun, //该函数名

&hModule); //该函数参数

}

方法4

如果我们创建窗口句柄的话就可以直接使用该WinMain函数的第一个参数。

还是之前的程序我们通过属性-》配置属性-》连接器-》系统-》子系统设置为“未设置”即可。通过设置断点,和VS自带的变量查看工具查看信息。因为如果这样设置后就不会出现控制台,也不会出现win32界面。

#include

#include

extern "C" HANDLE __ImageBase;

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPreInstanc,TCHAR*, int)

{

HMODULEhModule = GetModuleHandle(L"Kernel32.dll");

_tprintf(L"%0x\n", hModule);

HMODULEhCurrent_Module = GetModuleHandle(NULL);//这个句柄就是当前程序的起始地址

_tprintf(L"%0x\n", hCurrent_Module);

TCHARfilename[MAX_PATH];

GetModuleFileName(hCurrent_Module, filename, MAX_PATH);

_tprintf(L"%s\n", filename);

GetModuleFileName(hModule, filename, MAX_PATH);

_tprintf(L"%s\n", filename);

_tprintf(L"%0x\n", &__ImageBase);

_gettchar();

return0;

}

这个程序他的句柄就是WinMain函数的第一个参数。

相关创意

苹果切换控制使用
beat365手机中文官方网站

苹果切换控制使用

📅 08-19 👁️ 528
棕榈树12个品种有哪些?棕榈科常见的植物品种有哪些?
beat365手机中文官方网站

棕榈树12个品种有哪些?棕榈科常见的植物品种有哪些?

📅 07-11 👁️ 9225
鲲鹏展翅是什么意思
beat365投注网站

鲲鹏展翅是什么意思

📅 12-12 👁️ 7961
天天酷跑人物配飞天云豹好还是配奥利奥好?
365bet平台总代

天天酷跑人物配飞天云豹好还是配奥利奥好?

📅 08-26 👁️ 5402
龙的成语
beat365投注网站

龙的成语

📅 08-25 👁️ 518
山崩地裂 饥荒地陷与塌方现象解析!
beat365手机中文官方网站

山崩地裂 饥荒地陷与塌方现象解析!

📅 07-25 👁️ 3204
小奴小奴的意思 小奴詞語解釋
365bet平台总代

小奴小奴的意思 小奴詞語解釋

📅 12-07 👁️ 9711
王者荣耀水晶商店更新,王者荣耀水晶商店什么时候更新?
beat365手机中文官方网站

王者荣耀水晶商店更新,王者荣耀水晶商店什么时候更新?

📅 08-19 👁️ 4883