怎么截获其他窗口的消息

怎么截获其他窗口的消息,第1张

VB6还是VBNET。VBNET不知道

VB6应该是不可能的,除非有那种很高的高手高手高高手,哈哈

我也写过一个类似的程序,处理办法是用Timer不停的检查那个另外程序的窗口句柄是否存在,不存在就Unload掉自己的程序窗口。但是自己的程序不能只有一个窗口。

我想问一下,楼主SetParent的时候是怎么检查窗口是否存在的啊,一个道理吧。

如果楼主实在想挂钩子的话,也不是没办法,用C++写个DLL,然后VB调用。如果楼主想光用VB6,用VB6写个标准的DLL试试吧。听说现在VB6有办法写标准DLL,我没写过,也绝对不保证VB6写的DLL挂钩子能好用。

这是因为被设置了消息模式。再打开一个新的聊天窗口,然后点击“发送”右边那个小三角形,这个时候你会发现在出现的下拉框中有一个“消息模式”,而且前面一定带个勾,你点击“消息模式”,前面的勾就消失了,你再和好友聊天,发送信息后,聊天窗口就不会自动关 消息模式与聊天模式转换 ALT+T 快速呼出 CTRL+ALT+Z

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

解析:

通过呼叫GetParent,子窗口消息处理程序能确定其父窗口的窗口句柄:hwndParent = GetParent (hwnd) ;

当前窗口的句柄可以通过当前窗体的回调函数中的参数来取得~

没有理解明白你的意思!

如果是要获取其它窗口的消息队列中的消息,是可以的使用GetMessage和PeekMessage等API是可以完成的,VC中著名的Spy++就有这样的功能

但是楼主貌似是要实现拦截导致发生特定事件的消息,像你所说的IE反应d出窗的消息等,理论上是可以实现的。

前提是你要非常熟悉windows的消息处理机制,知道发生特定事件时,系统发了那些消息,以及程序内部发了哪些自定义消息,沿着这种流程查应该可以实现,但是这样的技术对程序员的功底要求很高,不是那么简单的,更不是几个函数就能搞定的

调用Windows

API

EnumWindows就可以枚举所有顶级窗口,所谓顶级窗口就是指没有父窗口的窗口。

函数定义:

BOOL

WINAPI

EnumWindows(

__in

WNDENUMPROC

lpEnumFunc,

__in

LPARAM

lParam

);

第一个参数是回

Windows消息机制需要Handle来做前提,所以"新建的窗口FormClosing已经发送了消息给类"这句话我不是很明白。

如果你想实现广播机制的话,可以使用C#中的委托机制来实现你的逻辑。

既在你的类中给Form类的FormClosing事件添加一个回调函数,这样,在窗体关闭的时候,自然就会通知这个类,然后调用你的回调函数。

以上就是关于怎么截获其他窗口的消息全部的内容,包括:怎么截获其他窗口的消息、如何打开消息窗口、如何获取当前窗口的句柄,以及父窗口的句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9298880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存