窗体关闭后,如何判断该窗体的句柄是否有效 打开一个窗口,执行一些任务,在任务完成后,会给这个窗体发一个消息。但在任务的执行过程中,用户可能会关闭这个窗体。这种情况下,PostMessage消息时,因为窗体的Handle对应的这个窗体已经关闭,会报一个内存错误。有没有什么方法,可以通过窗体的Handle来判断这个窗体是否有效? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FindWindow如果窗体存在返回值为窗体handle,如果不存在返回为nil可以将PostMessage改为SendMessage发出去就不管了,管它存不存在,不过不建议这样 试了一下IsWindow,跟踪到IsWindow(frm.Handle),这一步就报错了,00000180内存无法访问,好像窗口关闭后,frm.Handle就不能访问。 还是用Assigned判断窗体实例是否可用吧,如果frm都不存在了,frm.Handel肯定出错 先判断frm是否为nil,再将frm.Handle用try括起来(如果引发异常,说明frm对象已无效),最后再用IsWindow判断frm.Handle 用try捕捉异常就可以了,出异常就是窗口关闭了,进入相应流程 因为窗体已经关闭并释放,调用前IsWindow(frm.Handle)时,frm对象已经释放,肯定会抱错,建议两个方法,请选择其中一个:1。frm释放时,即ondestroy时,将frm引用设置为nil,这样你就可以通过判断frm=nil,得出窗口已经被释放;2。在窗口对象创建时候,获取窗口的句柄,并通过isWindow进行判断;至于楼上说的通过异常处理,我各个人觉得也可以; 我用IsWindow()判断出了窗体是否有效。 “上海金仕达卫宁软件公司”如何? 事务的问题(紧急,在线等) ERP开发中是由一个EXE文件组成还是象用友U8那样由多个EXE文件组成? 扩展组件 求助? 急急急!!!分不够再加!!!!在线等待!!! 求自适应表单控件? 为什么我的delphi7中没有adoquery1.fieldbyname('bmmc').AsString delphi中如何获取未来的日期与时间? 关于rapi.dll的问题 关于mapx 坐标系设置的问题 这样的桌面程序开发,应该用什么开发工具好一些?
发出去就不管了,管它存不存在,不过不建议这样
1。frm释放时,即ondestroy时,将frm引用设置为nil,这样你就可以通过判断frm=nil,得出窗口已经被释放;
2。在窗口对象创建时候,获取窗口的句柄,并通过isWindow进行判断;至于楼上说的通过异常处理,我各个人觉得也可以;