找回密码
 加入
搜索
查看: 530|回复: 3

[网络通信] 【已解决】关于检测窗口是否存在遇到的小问题

[复制链接]
发表于 2022-9-3 15:27:03 | 显示全部楼层 |阅读模式
本帖最后由 anythinging 于 2022-9-3 18:03 编辑

遇到个小问题,请教各位指点。
检测form2窗口是否存在的时候,如果定义了form2变量但没创建窗口,此时用wingetstate检测到的结果不准确。(目前暂时的解决的方法是定议form2=0,不知原理)

#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
Global $form2
$form1 = GUICreate('',300,200)
$bt1 = GUICtrlCreateButton('check',20,20)
$btshow = GUICtrlCreateButton('show',70,20)
$bthide = GUICtrlCreateButton('hide',120,20)
GUISetState()
While 1
        Switch GUIGetMsg()
                Case -3
                        Exit
                Case $bt1
                        Local $iState = WinGetState($form2)
                        MsgBox(262144,'$iState','Error= '&@error&@CR&'$iState= '&$iState,0)
                        If BitAND($iState, 1 ) Then
                                MsgBox(262144,$iState,'窗口存在',1)
                        Else
                                MsgBox(262144,$iState,'窗口不存在',1)
                        EndIf
                Case $btshow
                        $form2 = GUICreate('form2',300,200,1,1)
                        GUISetState(@SW_SHOW,$form2)
                Case $bthide
                        GUIDelete($form2)
        EndSwitch

WEnd


发表于 2022-9-3 15:45:43 | 显示全部楼层
Global $form2 未赋值时为空,WinGetState('') 很容易匹配到一个不相关的窗口,当然就不准确了。
而当赋值为数字 0 时,则是匹配一个句柄为 0 的窗口,肯定匹配不到,也就对了。
 楼主| 发表于 2022-9-3 16:43:32 | 显示全部楼层
感谢指点!请问是否还有更好的方法?
发表于 2022-9-3 17:00:27 | 显示全部楼层
anythinging 发表于 2022-9-3 16:43
感谢指点!请问是否还有更好的方法?

不知代码的用途。就当前而言,赋值为 0 是最简的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-27 04:29 , Processed in 0.072554 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表