キャプション(アプリケーションタイトル)を変更          <TOP>


アプリケーションのタイトルを変更します。

FindWindow クラス名またはキャプションを与えてウィンドウのハンドルを取得

SendMessage ウィンドウにメッセージを送信

WM_SETTEXT(&HC) ウィンドウ(コントロール)のタイトル・テキストを変更
 

例では、メモ帳のタイトルを変更します。メモ帳の起動時キャプションは、無題 - メモ帳になっています。

New Caption欄に新しいタイトル(例:キャプションを書き換える)を入力し、『Set Caption』ボタンをクリックすると、メモ帳のキャプションが書き換えられます。

New Caption欄にキャプションを書き換えると入力し、『Set Caption』ボタンをクリック

キャプションが書き換えられた状態

該当する文字列がない場合

 

'================================================================
'= キャプション(アプリケーションタイトル)を変更
'=    (ChangeCaption.bas)
'================================================================
#include "Windows.bi"

' 指定された文字列と一致するクラス名とウィンドウ名を持つトップレベルウィンドウのハンドルを返す
Declare Function Api_FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$)

' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない
Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any)

#define WM_SETTEXT &HC              'ウインドウ(コントロール)のタイトル・テキストを変更
#define vbNullString ByVal 0

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var target_hwnd As Long
    Var target_name As String
    Var new_caption As String
    Var Ret As Long

    target_name = Edit1.GetWindowText
    target_hwnd = Api_FindWindow(vbNullString, target_name)

    If target_hwnd = 0 Then
        A% = MessageBox(GetWindowText, "該当するアプリケーションは見あたりません!", 0 ,2)
        Exit Sub
    End If

    new_caption = GetDlgItemText("Edit2")
    Ret = Api_SendMessage(target_hwnd, WM_SETTEXT, 0, new_caption)
End Sub

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