SHOEISHA iD

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

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

japan.internet.com翻訳記事

タスクバーとVB.NET

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

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

時計を隠す/表示する

 ここでは、3種類のウィンドウを使用します。タスクバーという1つのメインウィンドウと、タスクバーの通知領域という子ウィンドウ、さらに時計という孫ウィンドウです。

 時計は通知領域の内部にあり、通知領域はタスクバーの内部にあります。FindWindow APIを使ってタスクバーウィンドウ(Shell_TrayWnd)へのハンドルを取得し、それからFindWindowEx APIを使って通知領域(Tray_NotifyWnd)とその子ウィンドウである時計(TrayClockWClass)を取得する必要があります。時計ウィンドウへのハンドルが得られたら、ShowWindow APIを使用します。ShowWindowに値1を与えると時計ウィンドウが表示され、値0を与えると時計ウィンドウが隠されます。Show Clockという名前のボタンに次のコードを追加してください。

Private Sub btnClock_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnClock.Click
Select Case btnClock.Text
Case "Show Clock" 'If Hidden
Dim TaskBarWin As Long, TrayWin As Long, ClockWin As Long

'Find TaskBar
TaskBarWin = FindWindow("Shell_TrayWnd", vbNullString)
'Find Tray Window
TrayWin = FindWindowEx(TaskBarWin, 0, "TrayNotifyWnd", vbNullString)
'Find Clock Window
ClockWin = FindWindowEx(TrayWin, 0, "TrayClockWClass", vbNullString)
ShowWindow(ClockWin, 1) 'Show Clock

btnClock.Text = "Hide Clock"
Case "Hide Clock" 'If Shown
Dim TaskBarWin As Long, TrayWin As Long, ClockWin As Long

TaskBarWin = FindWindow("Shell_TrayWnd", vbNullString)
TrayWin = FindWindowEx(TaskBarWin, 0, "TrayNotifyWnd", vbNullString)
ClockWin = FindWindowEx(TrayWin, 0, "TrayClockWClass", vbNullString)
ShowWindow(ClockWin, 0) 'Hide Clock

btnClock.Text = "Show Clock"
End Select
End Sub

 このコードではボタンのテキスト値を調べます。それがShow Clockなら時計が表示され、そうでなければ時計が隠されます。ボタンに表示される初期テキストはShow Clockなので、このボタンを2回クリックする必要があるかもしれません。このアプリケーションをいま実行すれば、図2のように時計がいったん消えて、また現れるでしょう。

図2 時計が消えて…
図2 時計が消えて…

タスクバーを固定/固定解除する

 ここでもFindWindow APIを使用します。外部ウィンドウを参照する場合には、”必ずFindWindow APIを使用する”ことを忘れないでください。

 Shell_TrayWnd(タスクバー)のハンドルを取得したら、システムに適切なメッセージを送る必要があります。このメッセージでは、何をすべきかをシステムに指示します。外部ウィンドウにメッセージを送るときは、PostMessage APIを使用できます。

 PostMessageでは、メッセージの送信先ウィンドウ、メッセージのタイプ、メッセージ自体、および追加のパラメータを指定する必要があります。この場合、固定/固定解除のメッセージを目的のウィンドウに送るだけで、追加の情報はありません。コードは次のとおりです。

Private Sub btnLock_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnLock.Click
Dim TaskBarWin As Long

'Find TaskBar
TaskBarWin = FindWindow("Shell_TrayWnd", vbNullString)
'Lock TaskBar
PostMessage(TaskBarWin, WM_COMMAND, 424, vbNullString)
End Sub

次のページ
同類のタスクバーウィンドウをグループ化/グループ化解除する

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング