有没有办法获得系统发给其他程序的消息?解决方法

有没有办法获得系统发给其他程序的消息?
  假设有A,B两个程序,A,B不联系,A正常运行的时候,B程序有没有办法收到操作系统发给A程序的消息?
------解决方案--------------------
利用B安装Hook,可以Hook到Windows的消息,但难点在于判断哪个消息是Windows发给A的
------解决方案--------------------
有办法实现,不过VB6有点难;
方法是安装钩子,可以由SetWindowsHookEx函数完成,该函数支持你安装某种类型的Hook,如鼠标hook,键盘HOOk,消息hook等等;Hook过程是你自定义的回调函数,VB6难就难在这个地方,你安装全局hook(也就是可以拦截所有进程的消息)的回调函数必须是dll中的函数,而VB6编译的Dll不导出函数,只导出Com对象,如果是Vc就好办多了。不过也不必灰心,网上也有关于让VB6的dll导出函数的讨论,国外有人用VB6导出过,看了,英文的,一知半解,还没试过。
------解决方案--------------------
引用:
有办法实现,不过VB6有点难;
方法是安装钩子,可以由SetWindowsHookEx函数完成,该函数支持你安装某种类型的Hook,如鼠标hook,键盘HOOk,消息hook等等;Hook过程是你自定义的回调函数,VB6难就难在这个地方,你安装全局hook(也就是可以拦截所有进程的消息)的回调函数必须是dll中的函数,而VB6编译的Dll不导出函数,只导出Com对象,如果是Vc就好办多了。不过也……


使用AddressOf可以定义回调函数, 被定义为回调的函数必须放在Bas模块中
------解决方案--------------------
引用:
引用:
有办法实现,不过VB6有点难;
方法是安装钩子,可以由SetWindowsHookEx函数完成,该函数支持你安装某种类型的Hook,如鼠标hook,键盘HOOk,消息hook等……


使用AddressOf可以定义回调函数, 被定义为回调的函数必须放在Bas模块中

这样定义的回调做不了全局勾子,因为AddressOf取得的是函数进程内的地址,只能用DLL注入