写代码的时候注意到的,以前没注意这两个函数的用法
主要区别:
LoadLibrary是把一个模块映射进调用进程的地址空间,需要时增加引用计数
而GetModuleHandle是返回一个已经映射进调用进程地址空间的模块的句柄
并不增加引用计数
使用GetModuleHandle可以判断做需要加载的模块是否已经被加载(到调用进程的地址空间).
代码1:
typedef void *(__stdcall *pfVirtualAllocEx)(unsigned long, void *, unsigned long, unsigned long, unsigned long); pfVirtualAllocEx MyVirtualAllocEx = NULL; MyVirtualAllocEx = (pfVirtualAllocEx)GetProcAddress(GetModuleHandle("Kernel32.dll"), "VirtualAllocEx");
代码2:
HINSTANCE hInst = LoadLibrary("User32.DLL"); typedef int (WINAPI *MSGBOX)(HWND,LPSTR,LPSTR,UINT); MSGBOX messagebox=(MSGBOX)GetProcAddress(hInst, "MessageBoxA" ); messagebox(NULL,"123","456",MB_OK); return 0;
多写一些案例, 会有很多不同的收获!
0则评论给“LoadLibrary和GetModuleHandle的区别”