ダウンロード ソースファイル (103.7 KB)
スタートボタンの設定
実のところ、このセクションのタイトルは誤解を招くものかもしれません。スタートボタンには実はWindows XPで設定できるプロパティはないのですが、スタートボタンを有効/無効にしたり、スタートボタンテキストのようなものを変更したりすることができます。
スタートボタンを有効/無効にする
やるべきことは、タスクバー内のスタートボタンのウィンドウへのハンドルを取得してから、EnableWindowでTrue(有効)またはFalse(無効)を指定することによってスタートボタンウィンドウを有効/無効にすることです。
Private Sub btnStartButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnStartButton.Click Select Case btnStartButton.Text Case "Disable Start Button" Dim TaskBarWin As Long, StartButtonWin As Long 'Find TaskBar TaskBarWin = FindWindowEx(0, 0, "Shell_TrayWnd", Nothing) 'Find Start Button StartButtonWin = FindWindowEx(TaskBarWin, 0, "Button", Nothing) 'Disable Start Button EnableWindow(StartButtonWin, False) btnStartButton.Text = "Enable Start Button" Case "Enable Start Button" Dim TaskBarWin As Long, StartButtonWin As Long TaskBarWin = FindWindowEx(0, 0, "Shell_TrayWnd", Nothing) StartButtonWin = FindWindowEx(TaskBarWin, 0, "Button", Nothing) EnableWindow(StartButtonWin, True) 'Enable Start Button btnStartButton.Text = "Disable Start Button" End Select End Sub
スタートボタンテキストを変更する
もしかしたら、この記事の中で1番先に読まれるのはこのトピックかもしれません。
スタートボタンウィンドウ(ボタン)へのハンドルを取得したら、修正版のSendMessage APIを使って、このウィンドウに新しいテキストを送る必要があります。お使いのAPIをよく見ると、次の2つのものに気付くでしょう。
SendMessage'Normal SendMessage Private Declare Function SendMessage Lib "user32.dll" _ Alias "SendMessageA" (ByVal hwnd As Int32, _ ByVal wMsg As Int32, _ ByVal wParam As Int32, _ ByVal lParam As Int32) As Int32
SendMessageSTRING'SendMessage lParam = String Private Declare Function SendMessageSTRING Lib "user32.dll" _ Alias "SendMessageA" (ByVal hwnd As Int32, _ ByVal wMsg As Int32, _ ByVal wParam As Int32, _ ByVal lParam As String) As Int32
両者の実際の違いは、後者のlParamパラメータが“文字列”であって、Int32ではないという点だけです。このようになっている理由は、スタートボタンテキストとして数値メッセージではなく文字列メッセージを送るからです。
次のプロシージャをコードに追加してください。
Private Sub SetStartCaption(ByVal NewStr As String)
Dim TaskBarWin As Long
Dim StartWin As Long
Dim StartText As String
'Find TaskBar
TaskBarWin = FindWindow("Shell_TrayWnd", vbNullString)
'Find Start Button
StartWin = FindWindowEx(TaskBarWin, 0&, "button", vbNullString)
'Set StartButton Text
StartText = Microsoft.VisualBasic.Left(NewStr, 5)
'Send The Message
SendMessageSTRING(StartWin, WM_SETTEXT, 256, StartText)
Exit Sub 'Don't Do Anything Else
End Sub
このプロシージャはスタートボタンのテキストを更新するためのものです。ハンドルを取得してから、スタートボタンウィンドウに文字列メッセージを送ります。送られる内容は、Change Start Button TextボタンのコードのInputBoxに何を入力するかで決まります。
Private Sub btnText_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnText.Click
Select Case btnText.Text
Case "Change Start Button Text"
Dim NewText As String
NewText = InputBox("Enter New Text") 'Get New Start Button Text
SetStartCaption(NewText)
btnText.Text = "Change Back Start Button Text"
Case "Change Back Start Button Text"
SetStartCaption("Start") 'Revert Back To "Start"
btnText.Text = "Change Start Button Text"
End Select
End Sub
テキストを入力した後のスタートボタンの表示は、例えば図4のようになります。

これの唯一の問題点は、ウィンドウ内に収まる文字数までしか入力できないことです。
この記事は参考になりましたか?
- japan.internet.com翻訳記事連載記事一覧
- この記事の著者
-
japan.internet.com(ジャパンインターネットコム)
japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
Hannes du Preez(Hannes du Preez)
プログラミングトレーナー。プログラミングを最大の趣味とする。Visual Basic 5からプログラミングを始め、Visual Basic 6.0、Visual C++ 6.0、Visual Basic .NETでアプリケーションを開発。プログラミングの知識はすべて独学によるもので、CodeGuru...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
