下面2行代码有什么区别啊关于模块句柄和进程id,该怎么解决

下面2行代码有什么区别啊?关于模块句柄和进程id
g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("Hook"),0);
 pid = GetProcessID("explorer.exe");

先是问下
模块句柄 中的模块是什么意思啊 和程序句柄 有啥子区别 和实例句柄有啥子区别



另外 我想 制作钩子 去拦截 某程序的函数

该怎么拦截 需要用到上面2行代码的哪个


------解决方案--------------------
太泛泛了,先仔细看《windows程序设计》吧
------解决方案--------------------
g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("Hook"),0);
 pid = GetProcessID("explorer.exe");
================
这两个API毫无共同点,一点关系都没有,哪来的区别啊,根本就毫不相干啊
如果用钩子当然是第一个

模块句柄 中的模块是什么意思啊 和程序句柄 有啥子区别 和实例句柄有啥子区别
=================
模块句柄中的模块你可以理解为EXE文件或是DLL装入内存之后
------解决方案--------------------
LZ似乎还有很多WINDOWS编程的基础概念没有弄清楚,听1L的话去买本"windows程序设计"来看把.

简单解释一下你提的问题:

1. 关于模块句柄和进程id

"句柄(Handle)"是操作系统中很常用的一个概念.一个句柄可以理解为一个数组的下标(index). 你知道操作系统需要维护相当多的资源,每个资源可以理解为一个系统对象,这些系统对象如何被管理?就是通过句柄,每个句柄指向一个系统对象,操作系统得到了这个句柄,就直到你要引用那个对象了。在WIN32编程中,一个句柄的定义是:
define HANLE PVOID
也就是说一个句柄的实质是一个4字节长度地址指针(32位编译器下)

进程id,进程id和句柄没有直接关系,该ID用于唯一选择一个进程。

2.HOOK 到底是exe还是dll ?
从本质上说,exe和dll的区别仅仅在于exe提供了一个主线程的入口,而dll没有,所以exe可以直接被执行而dll只能被其它exe加载执行。

3.模块
任何一个dll或者exe文件被加载到内存后,你可以认为该文件已经被拷贝到了内存中,在内存中存放这些文件内容的地方,称为一个模块。每个模块的句柄,其实就是这个模块在内存上的地址的起始指针。