anythinging 发表于 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



afan 发表于 2022-9-3 15:45:43

Global $form2 未赋值时为空,WinGetState('') 很容易匹配到一个不相关的窗口,当然就不准确了。
而当赋值为数字 0 时,则是匹配一个句柄为 0 的窗口,肯定匹配不到,也就对了。

anythinging 发表于 2022-9-3 16:43:32

感谢指点!请问是否还有更好的方法?

afan 发表于 2022-9-3 17:00:27

anythinging 发表于 2022-9-3 16:43
感谢指点!请问是否还有更好的方法?

不知代码的用途。就当前而言,赋值为 0 是最简的
页: [1]
查看完整版本: 【已解决】关于检测窗口是否存在遇到的小问题