怎么拦截WM_QUIT消息? 怎么拦截WM_QUIT消息? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 怎样拦截WM_QUIT消息,防止程序退出?100分有没人要啊? 防止程序退出用Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)事件就可以啊硬要用手功拦截就得自己写消息处理函数罗 QueryUnload事件参数Cancel=true阻止不了WM_QUIT消息 使用子类(用SetwindowLong等API)处理指定窗体的消息 给出代码啊!使用过,我是得不到WM_QUIT消息进行处理,得用全局钩子,那位知道的给出代码,测试正确立即给分! 是,QUERYUNLOAD只能拦截WM_CLOSE,而且我也不知道如何有效拦截该消息,常规的自己写窗口消息处理程序的办法也是不适用的,如果你熟悉WINDOWS窗口程序的消息处理就会明白我的意思了。因为该消息压根就不会被消息处理程序处理,因为在消息接收循环里就被终结了(用于退出循环),窗口的销毁是由WM_DESTROY引起的。 RegisterShellHook是一个未公开的 API系统函数,它可以帮助日志程序在整个 Windows系统范围内感知到其它窗体的创建、激活或关闭等消息。Public Declare Function RegisterShellHook Lib "Shell32" Alias "#181" _ (ByVal hwnd As Long, ByVal nAction As Long) As Long 你的问题太笼统,而且你知道在封装的严严实实的VB中实现这个功能就是倒行逆施,虽然有方法可以解决,但是其复杂程度难以想象。如果你仔细的研究一下Windows的消息机制并参考在C++下面是如何做的,然后再回头看看VB那可怜的内存池,也许你就不会这么问这个问题了。 用SetWindowLong把窗体句柄进行子类派生,在全局派生函数中判断msg是否等于WM_QUIT,并作相应操作判断完毕后用CallWindowProc还原窗体句柄注:子类派生不允许进行debug,请注意存档,请参考卢培培的相关例子 回答的人太多了,就不强分了只想说:局部钩子 vb 还是可以作的,主要是要注意存盘,容易当机当然不是放到 vb 的消息里要自己作消息循环然后判断 已经有很多做好的子类化 代码,请搜索后参考 再说一遍吧,WM_QUIT消息是不会进入窗口消息处理程序里面的,在循环读取消息中就被用来退出循环了!请不相信的各位自己去看VC里的窗口框架就知道了。 函数的运用问题? 如何根据Listview的listitem的Check动态查询,(Listview的listitem是数据库字段) 报表无法正确使用的情况,高分求知----------100 如何用Winsock控件编写邮件发送程序 我自画了个按钮控件想实现切换.....现在还有问题,请高手指点 用户定义类型未定义的错误!请指教!! 如何把表格中的数据写入数据库 请各位同行们帮忙啊!!(还是关于文件传输问题) 如何改变菜单的颜色 如何“动态”的调用“动态连接库”?(for VB) word的问题! 自己做的DTPicker控件弹出的日期选择框会被遮盖住,怎么办?
事件就可以啊硬要用手功拦截就得自己写消息处理函数罗
(ByVal hwnd As Long, ByVal nAction As Long) As Long
判断完毕后用CallWindowProc还原窗体句柄注:子类派生不允许进行debug,请注意存档,请参考卢培培的相关例子
只想说:
局部钩子 vb 还是可以作的,主要是要注意存盘,容易当机
当然不是放到 vb 的消息里
要自己作消息循环
然后判断
已经有很多做好的子类化 代码,请搜索后参考