ウインドウの存在確認         <TOP>


IsWindow 指定のウインドウが、存在するか調べる

FindWindow クラス名とウィンドウ名が指定された文字列と一致するトップ レベル ウィンドウのハンドルを取得

タイマーで電卓の存在有無を確認し、存在する場合そのハンドル値を表示します。

 

 

'================================================================
'= ウインドウの存在を確認
'=    (IsWindow.bas)
'================================================================
#include "Windows.bi"

' 指定されたウィンドウ ハンドルが既存のウィンドウを識別しているどうかを判断
Declare Function Api_IsWindow& Lib "user32" Alias "IsWindow" (ByVal hWnd&)

' 指定された文字列と一致するクラス名とウィンドウ名を持つトップレベルウィンドウ( 親を持たないウィンドウ)のハンドルを返す。この関数は、子ウィンドウは探さない。検索では、大文字小文字は区別されない
Declare Function Api_FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$)

Var Shared Text(2) As Object
Var Shared Button1 As Object
Var Shared Timer1 As Object

For i = 0 To 2
    Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1)))
    Text(i).SetFontSize 14
Next
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14
Timer1.Attach GetDlgItem("Timer1")

Var Shared hWnd As Long

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()

    Shell "Calc.exe"

    Timer1.SetInterval 100
    Timer1.Enable -1
End Sub

'================================================================
'=
'================================================================
Declare Sub Timer1_Timer edecl ()
Sub Timer1_Timer()
    Var ClassName$ As String
    Var Caption$ As String
    Var Ret As Long

    ClassName$ = "SciCalc"
    Caption$ = "電卓"

    '電卓のハンドル取得
    hWnd = Api_FindWindow(ClassName$, ByVal 0)
    Text(1).SetWindowText "&&H" & Hex$(hWnd)

    'ウインドウの存在確認
    Ret = Api_IsWindow(hWnd)

    If Ret = 0 Then
        Text(0).SetWindowText "電卓は存在しません!"
        Button1.EnableWindow -1
    Else
        Text(0).SetWindowText "電卓は存在します!"
        Button1.EnableWindow 0
    End If
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End