CodeZine(コードジン)

特集ページ一覧

タスクバーとVB.NET

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

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/02/10 14:00

 本稿では、VB.NETで、「時計を隠す」「タスクバーを他のウィンドウの手前に表示する 」「タスクバーのプロパティを表示する」といった、タスクバーのさまざまな設定を操作する方法を解説していきます。

目次

はじめに

 数日前、ある学生に尋ねられました。VB.NETプログラムからタスクバーを操作することは可能かどうかと。そこで私はその学生のためにこのサンプルアプリケーションを作成することにしました。この記事では、タスクバーの大部分の設定を操作できるアプリケーションの作成方法を示します。ここで扱う機能は次のとおりです。

  • 時計を隠す
  • タスクバーを固定する
  • 同類のタスクバーボタンをグループ化する
  • タスクバーの内容(アクティブなウィンドウのボタン)を隠す
  • アクティブでないトレイアイコンを自動的に隠す
  • タスクバーを自動的に隠す
  • タスクバーを他のウィンドウの手前に表示する
  • スタートボタンを無効にする
  • スタートボタンのテキストを変更する
  • タスクバーのプロパティを表示する
  • デスクトップ機能を表示する

デザイン

 今回は図1のようなフォームをデザインしました。ボタンの名前は自分にとって分かりやすいものに変更するとよいでしょう。

図1 デザイン
図1 デザイン

コーディング

 コードウィンドウの冒頭に次のImportを追加してください。この記事全体でいくつかのレジストリ機能を使用するからです。

Imports Microsoft.win32 'Registry Functions
Imports System.Runtime.InteropServices 'API functions

 曖昧さを避けるため、私はすべてのAPIとそれらに関連する定数から始めることにしました。下記のコードをコードウィンドウに追加してください。

'Find External Window
Private Declare Function FindWindow Lib "user32.dll" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Int32

'Find Child Window Of External Window
Private Declare Function FindWindowEx Lib "user32.dll" Alias _
"FindWindowExA" (ByVal hWnd1 As Int32, _
ByVal hWnd2 As Int32, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Int32

'Show A Window
Private Declare Function ShowWindow Lib "user32.dll" _
(ByVal hwnd As Int32, _
ByVal nCmdShow As Int32) As Int32

'Post Message To Window
Private Declare Function PostMessage Lib "user32.dll" Alias _
"PostMessageA" (ByVal hwnd As Int32, ByVal wMsg As Int32, _
ByVal wParam As Int32, _
ByVal lParam As Int32) As Int32

'Enable A Window
Private Declare Function EnableWindow Lib "user32.dll" _
(ByVal hwnd As Int32, ByVal fEnable As Int32) As Int32

'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

'Send Message & Wait
Declare Auto Function SendMessageTimeout Lib "User32" ( _
ByVal hWnd As Integer, _
ByVal Msg As UInt32, _
ByVal wParam As Integer, _
ByVal lParam As Integer, _
ByVal fuFlags As UInt32, _
ByVal uTimeout As UInt32, _
ByRef lpdwResult As IntPtr _
) As Long

'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

'Get Handle To Desktop
Private Declare Function GetDesktopWindow Lib "user32" () As IntPtr

Private Const WM_WININICHANGE = &H1A 'INI File Update
Private Const HWND_BROADCAST = &HFFFF& 'Send To All
Private Const WM_SETTINGCHANGE = &H1A 'Setting Change
Private Const SMTO_ABORTIFHUNG = &H2 'Stop If Hang
Private Const WM_COMMAND As Int32 = &H111 'Send Command
Private Const WM_USER As Int32 = &H400 'User
Private Const WM_SETTEXT = &HC 'Change Text
Private Const WM_GETTEXT = &HD 'Get Text

 コメントを読めば、それぞれのAPIの機能がどのようなものか概ね分かるはずです。APIを初めてみる方には、この記事を読むようお勧めします。もちろん、本稿でも詳しい説明を行います。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

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

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Hannes du Preez(Hannes du Preez)

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

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5