メモ帳の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