メモ帳のEditに文字列を送る          <TOP>


FindWindow クラス名またはキャプションを与えてウィンドウのハンドルを取得
FindWindowEx クラス名 、または キャプションを与えてウィンドウのハンドルを取得
SendMessage ウィンドウにメッセージを送信
WM_SETTEXT(&HC) ウィンドウ(コントロール)のタイトル・テキストを変更
WM_CLOSE(&H10) ウィンドウ或いはアプリケーションをクローズされた

 

'================================================================
'= メモ帳のEditに文字列を送る
'=    (SendMessage9.bas)
'================================================================
#include "Windows.bi"

' クラス名またはキャプションを与えてウィンドウのハンドルを取得
Declare Function Api_FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$)

' クラス名 、または キャプションを与えてウィンドウのハンドルを取得
Declare Function Api_FindWindowEx& Lib "user32" Alias "FindWindowExA" (ByVal hWndParent&, ByVal hWndChildAfter&, ByVal lpszClass$, ByVal lpszWindow$)

' ウィンドウにメッセージを送信
Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any)

#define WM_SETTEXT &HC                  'ウィンドウ(コントロール)のタイトル・テキストを変更
#define WM_CLOSE &H10                   'ウィンドウ或いはアプリケーションをクローズされた

Var Shared Edit1 As Object
Var Shared Button1 As Object

Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

Var Shared hWnd As Long

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Shell "notepad", , 5
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var ClassName As String
    Var hChildWindow As Long
    Var txt As String
    Var Ret As Long

    txt = Edit1.GetWindowText

    'クラス名でウィンドウハンドルを取得
    ClassName = "Notepad"

    hWnd = Api_FindWindow(ClassName, ByVal 0)

    'ウィンドウハンドルを取得できたときは
    If hWnd <> 0 Then
        'クラス名で子ウィンドウハンドルを取得
        ClassName = "Edit"
        hChildWindow = Api_FindWindowEx(hWnd, 0, ClassName, ByVal 0)

        'コントロールのテキストを設定
        Ret = Api_SendMessage(hChildWindow, WM_SETTEXT, 0, txt)
    End If
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_QueryClose edecl ()
Sub MainForm_QueryClose()
    Var Ret As Long

    'メモ帳を終了させる
    Ret = Api_SendMessage(hWnd, WM_CLOSE, 0, 0)
End Sub

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