印刷用ページ      送信     
クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Visual Studio 2005
Technical Articles
VB マイグレーション Tips
プログラミング
 現在のシステム環境に関する様々な情報を取得する方法について
現在のシステム環境に関する様々な情報を取得する方法について

最終更新日 2006 年 6 月 22 日

download.gif

サンプル コードのダウンロード (vbmigtips_SystemInformation.msi, 490 KB)

※ このサンプルをインストールするには Visual Studio 2005 が必要です。

コンピュータ名やドメイン名、画面の作業領域のサイズ、メニューに表示するテキストのフォントなど、システム環境に関する情報を取得したい場合があると思います。そこで今回は、システム環境に関する情報を取得する方法について紹介します。

現在のシステム環境の情報を取得する場合、Visual Basic 6.0 では、Win32API を使用します。取得するシステム環境情報に応じて、使用する関数も異なりました。一方、Visual Basic .NET 以降では、SystemInformation クラスを使用します。これにより、様々な情報を簡単に取得することができるようになりました。今回は、ComobBox のリストに SystemInformation クラスのプロパティ名の一覧を追加します。一覧から取得したい情報項目 (プロパティ名) を選択すると、下部の TextBox に指定したシステム環境に関する情報が表示されるアプリケーション (図1) を作成します。

SystemInformation_fig01.JPG
図1

まず、SystemInformation クラスのプロパティ名を取得し、ComboBox のリストに追加します。SystemInformation クラスのプロパティ名を取得するには、SystemInformation クラスの Type を取得し、GetProperties メソッドで、すべてのパブリック プロパティを取得します。実装コードは以下のとおりです。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   Dim typeSystemInformation As Type = GetType(Windows.Forms.SystemInformation)
   Dim pi As PropertyInfo() = typeSystemInformation.GetProperties()
   For Each prop As PropertyInfo In pi
	Me.ComboBox1.Items.Add(prop.Name)
   Next
End Sub

リスト1

上記 (リスト1) の「Dim typeSystemInformation As Type = GetType(Windows.Forms.SystemInformation)」で、インスタンスの Type を取得し、「Dim pi As PropertyInfo() = typeSystemInformation.GetProperties()」で、SystemInformation クラスでサポートされている、すべてのパブリック プロパティを取得します。「Me.ComboBox1.Items.Add(prop.Name)」で、変数 pi に格納されたパブリック プロパティを ComobBox のリストに追加していきます。これにより、図2 のように ComobBox のリストに SystemInformation クラスのプロパティ名の一覧が表示されます。

SystemInformation_fig02.JPG
図2

次に、図2 の一覧から取得したい情報項目 (プロパティ名) の情報を取得し、下部の TextBox に表示します。GetProperty メソッドを使用して指定したプロパティを取得し、GetValue メソッドでプロパティの値を取得します。実装コードは以下のとおりです。

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
   TextBox1.Clear()
   Dim strName As String = Me.ComboBox1.SelectedItem.ToString
   Dim typeSystemInformation As Type = GetType(Windows.Forms.SystemInformation)
   Dim pi As PropertyInfo = typeSystemInformation.GetProperty(strName)
   Dim strPropval As String
   strPropval = pi.GetValue(Nothing, Nothing).ToString
   Dim strOldChar() As String = New String() {"{", "}", "[", "]", " "}
   Dim i As Integer
   For i = 0 To strOldChar.Length - 1
    strPropval = strPropval.Replace(strOldChar(i), "")
   Next
   Dim propvals() As String = strPropval.Split(",")
   For Each prop As String In propvals
    If TextBox1.Text = "" Then
     TextBox1.Text = prop.ToString
    Else
     TextBox1.Text = TextBox1.Text + vbCrLf + prop.ToString
    End If
   Next
End Sub

リスト2

上記 (リスト2) の「Dim typeSystemInformation As Type = GetType(Windows.Forms.SystemInformation)」で、インスタンスの Type を取得し、「Dim pi As PropertyInfo = typeSystemInformation.GetProperty(strName)」で、指定したプロパティを取得します。そして、「strPropval = pi.GetValue(Nothing, Nothing).ToString」で指定したプロパティの値を取得します。
リスト2 の「Dim strOldChar() As String = New String() {"{", "}", "[", "]", " "}」以降では、GetValue メソッドによって取得したプロパティ値をより見やすく、綺麗に TextBox に表示するため、括弧や空白などを省き、必要に応じて改行などを行う処理を行っています。

上記を実装し、図2 のリストから取得したい情報項目 (プロパティ名) を選択すると、下部の TextBox に指定したシステム環境に関する情報が表示されます。たとえば、図2 のリストから「MenuFont」を選択すると、図1 のように、メニューに表示するテキストのフォントを取得し、TextBox に表示されます。

このように、SystemInformation クラスを使用することでシステム環境に関する様々な情報を取得することができます。また、Visual Basic 2005 では、My 機能が新たにサポートされてことにより、SystemInformation クラスを使用せずに、システムに関する多くの情報を取得することができます。しかし、My 機能は、.NET Framework でよく使われるクラスや機能へのエントリ ポイントのみ提供されているため、SystemInformation クラスによって取得可能なすべての情報を取得することはできません。

© 2008 Microsoft Corporation.All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker