ウィンドウへの入力の有効無効を設定          <TOP>


起動した電卓への入力を有効化・無効化の設定をします。

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

EnableWindow ウィンドウへの入力可能不可能を設定

 

例では、電卓を起動し入力の有効化・無効化を設定しています。

 
'================================================================
'= ウィンドウへの入力の有効無効を設定
'=    (EnableWindow.bas)
'================================================================
#include "Windows.bi"

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

' ウィンドウへの入力可能不可能を設定
Declare Function Api_EnableWindow& Lib "user32" Alias "EnableWindow" (ByVal hWnd&, ByVal bEnable&)

Var Shared Radio1 As Object
Var Shared Radio2 As Object
Var Shared Button1 As Object

Radio1.Attach GetDlgItem("Radio1") : Radio1.SetFontSize 14
Radio2.Attach GetDlgItem("Radio2") : Radio2.SetFontSize 14
Button1.Attach getDlgItem("Button1") : Button1.SetFontSize 14

Var Shared Index As Integer

'================================================================
'=
'================================================================
Declare Sub WindowState edecl ()
Sub WindowState()
    Var ClassName As String
    Var hWnd As Long
    Var Ret As Long

    'クラス名でウィンドウハンドルを取得
    ClassName = "SciCalc"
    hWnd = Api_FindWindow(ClassName, ByVal 0)

    'ウィンドウハンドルを取得できたときは
    If hWnd <> 0 Then

        'ウィンドウへの入力の有効無効を設定
        Ret = Api_EnableWindow(hWnd, Index)
    End If
End Sub

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

    'コマンドボタンを無効に設定
    Button1.EnableWindow 0

    '電卓を起動
    Shell "Calc.exe",, 5
End Sub

'================================================================
'=
'================================================================
Declare Sub Radio1_on edecl ()
Sub Radio1_on()
    Index = 1
    WindowState
End Sub

'================================================================
'=
'================================================================
Declare Sub Radio2_on edecl ()
Sub Radio2_on()
    Index = 0
    WindowState
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Radio1_on
End Sub

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