搜索
首页 电脑/网络 程序设计 VB

如何得到子窗体的句柄

  用VB控制excel的程序,在关闭程序时提示出错,原因是关掉程序的时候excel没有关掉。我在form_unload过程中加入如下代码运行正常:xlhwnd = FindWindow("XLMAIN", vbNullString)PostMessage xlhwnd, WM_CLOSE, 0, 0先找到excel窗口的句柄,然后向其发送关闭的消息。
  但是为了让程序结合的更好,我又用SetParent xlhwnd, Form1。hwnd将excel作为form1的子窗体。程序又提示出错了。这个时候我该用什么代码来找到excel这个子窗体的句柄,然后关闭它呢,或者能不能提供比我这个更巧妙的方法呢?呵呵,我的积分不多了,千万不要嫌少!!!。
  

全部回答

2006-03-23

0 0

    完全同意楼上的观点,让Excel窗口自己关闭 不过还是要解决楼主的问题,查找子窗体的方法 Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long FindWindowEx函数,关于此函数介绍请看这个网页 给你个例程 点 mand1就把form2设为form1的picture1中的子窗体 点 mand1就关闭子窗体Form2 你一看就懂。
    。

2006-03-23

124 0

    我看了一下楼主的描述,我认为楼主你的问题不在于如果关闭一个子窗口,而在于你的EXCEL的代码可能有问题,首先你要检查你的Excel Application对象,是否在你退出程序时调用了Quit对象。
  如果没有调用,或调用后没有执行成功,那么你一开始new出来的excel application对象就不可能释放,如果没有释放,那么自然就会报错。  你这时再用某种方式来关闭excel application对象的窗口,只能使事情变得更糟。
   你检查一下你的VB操作Excel的代码块,是否在结束时没有关闭对象excel application,另外,在操作Excel对象的代码块无法正常完成退出的情况下,一定要找到他的原因,而不是用类似发送WM_CLOSE消息这样的方式来关闭窗口。
    因为毕竟问题不在EXCEL,而在于你操作它的代码,在退出时写得不正确。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
VB
程序设计
电脑装机
操作系统/系统故障
硬件
笔记本电脑
百度
互联网
反病毒
软件
程序设计
VB
数据库
C/C++
JAVA相关
C#/.NET
VC++
汇编语言
其他编程语言
VB
VB
举报
举报原因(必选):
取消确定举报