SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

タスクバーとVB.NET

VB.NETプログラムでタスクバーを自由に設定しよう

  • X ポスト
  • このエントリーをはてなブックマークに追加

スタートボタンの設定

 実のところ、このセクションのタイトルは誤解を招くものかもしれません。スタートボタンには実はWindows XPで設定できるプロパティはないのですが、スタートボタンを有効/無効にしたり、スタートボタンテキストのようなものを変更したりすることができます。

スタートボタンを有効/無効にする

 やるべきことは、タスクバー内のスタートボタンのウィンドウへのハンドルを取得してから、EnableWindowTrue(有効)または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のようになります。

図4 変更後のスタートボタン
図4 変更後のスタートボタン

 これの唯一の問題点は、ウィンドウ内に収まる文字数までしか入力できないことです。

次のページ
タスクバーのプロパティウィンドウを表示する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Hannes du Preez(Hannes du Preez)

プログラミングトレーナー。プログラミングを最大の趣味とする。Visual Basic 5からプログラミングを始め、Visual Basic 6.0、Visual C++ 6.0、Visual Basic .NETでアプリケーションを開発。プログラミングの知識はすべて独学によるもので、CodeGuru...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3473 2009/02/10 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング