如何判断窗口句柄是否有效(100分)

  • 主题发起人 主题发起人 g622
  • 开始时间 开始时间
G

g622

Unregistered / Unconfirmed
GUEST, unregistred user!
如何判断窗口句柄是否有效
 
一般判断Handle>0 即有效。
 
if handle>0 then
; ; messagebox('此窗口为有效窗口');
 
if assigned(Form1) then
; MessageBox(Handle,'窗口句柄有效','提示框',MB_OK+MB_ICONINFORMATION);
 
这个问题真的很头痛。
比如,使用CreateOleObject打开了一个Word,然后再将Word关闭,这时候CreateOleObject的句柄仍然不是空。
我对这种处理是捕获Word关闭的消息,然后手工设置句柄为空。

希望听听大家的处理办法。
 
BOOL IsWindow(
; ; HWND hWnd // handle of window
; ;);
 
使用IsWindow应该可以,但是恕我驽钝,没有实验成功。
楼上是否可以提供一个小例子?
 
我倒,不用了吧,这么容易的,我来写个吧,嗬嗬^_^
代码:
var
 ; h_mywnd:thandle;
begin
 ; h_mywnd:=findwindows('Systray','');
 ; if iswindow(h_mywnd) then
 ; begin
 ;  ; ....
 ; end;
end;
TO yzhshi:上次遇见过类似问题,也是对象不会自动释放的,结果也是要手动设成NIL:(
 
to yzhshi:
>>我对这种处理是捕获Word关闭的消息,然后手工设置句柄为空。
我对如何捕获word关闭的消息一直没有什么好办法,大侠用的是什么方法,指教一二.
不过如果是用FindWindow就算了,因为我可以开两个Caption相同的Word文档的.
 
我处理Word关闭的方法是使用VBA代码,在关闭以前给Delphi发送一个消息。
Delphi收到消息后就设置句柄为空,不过一旦Word执行了非法操作,那一切就ByeBye了,所以还需要
在再次调用Word属性的时候先使用Try Except测试句柄是否存在,方法太笨了,不过还有效。

to iamfly:就是使用老兄这个办法,得到句柄的时候,执行isWindow就出现异常错误了,所以我看一下大家的代码。
 
=0也是窗口(桌面)
 

Similar threads

回复
0
查看
818
不得闲
S
回复
0
查看
782
SUNSTONE的Delphi笔记
S
S
回复
0
查看
694
SUNSTONE的Delphi笔记
S
后退
顶部