如何截获一个窗口的关闭消息?

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:09:47
我想在一个窗口关闭之前,处理一些事(要判断的窗口并非程序中的某个界面,而是别的应用程序的窗口)
不知道有没有哪位高人指点一二
我也知道要做系统钩子,关键是怎么做?
问题是这样出现的:我将我的程序的界面,嵌入到别的程序的窗口中了,可是,一旦这个窗口关闭,程序就退出来了(是非正常退出的那种)
所以,我想先截获这个窗口的关闭消息,在关闭之前,我先将我的程序跑出来,等发现了我要嵌入的窗口,我再嵌进去,这样就不会有错了
麻烦有会的朋友,给个具体点的例子.
---------------------------------
请大家注意:我不是要判断这个窗口是否已经关闭,而是要判断这个窗口是否准备关闭?
--------------------------------
再次强调,我要判断的窗口对象,不是自己程序里的,是别的应用程序的窗口,这与控件无关,也与UnLoad事件无关
-------------------------------
唉,后面的回答,越来越答非所问了.

VB6还是VB.NET。VB.NET不知道
VB6应该是不可能的,除非有那种很高的高手高手高高手,哈哈

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

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

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

用findwindow API函数可以根据窗口标题搜索到具体的窗口句柄,然后可以就可以做其他的事了,

在本程序中判断程序是否要关闭可以用

sub form_unload()
msgbox "你要退出程序吗?",vbyesno
end sub

写在unload事件里应该就可以的!~

你在end sub之前把你想要做的处理都做完 然后才关闭!~

你做的是控件?
控件消息里的Terminate事件是在主窗体退出前发出的。
关键不知道你的程序的界面,如何嵌入到别的程序的窗口中去的,所以没法给你好的建议。

你想拦截关机?

貌似....嘿嘿~~

做个钩子程序

拦截系统消息,然后就转到你自己的处理程序中