Visual Studio 2019は、無料版もあります。そこでVBを使ってプログラミングの練習というのもいいかもしれません。
プログラムを作る場合、OSが対応しているかとか、メモリがどのぐらいあるかをチェックする必要があることが結構あります。
ここでは、その手のシステムチェック用の関数をまとめていきます。
OS関係
プログラムを作る場合、システム動作環境を調べて動作対象機種かどうかをチェックするなんてことがよくあります。
ここではシステムのチェックに使えるものをまとめていきます。
ウィンドウズのバージョンを調べる
ウィンドウズのバージョンを調べる関数は「System.Environment.OSVersion」というのがあります。
ただしこの場合、ウィンドウズ10を利用していても返ってくる値はWindows NT 6となっています。
表面的にはウィンドウズ10でも内部的なバージョンはウィンドウズNTなのでしょう。
Dim str As String
Dim osinfo As System.OperatingSystem = System.Environment.OSVersion
str = osinfo.ToString()
MsgBox(str)
そこで今度は別の方法でOS名を取得します。
MsgBox(My.Computer.Info.OSFullName)
これで「Microsoft Windows 10 Home」と返ってきます。
また、レジストリ「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion」にはOSの情報がまとまって格納されています。
「ProductName」には「Windows 10」という名前があると思います。
レジストリから直接値を取得する場合、「My.Computer.Registry.GetValue」で取得できます。そこで「ProductName」のデータを取得してみましょう。
Dim str = My.Computer.Registry.GetValue(
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName", Nothing)
MsgBox(str)
すると、「Windows 10」という文字が返ってきます。
ビルド番号を取得する
最近ではウィンドウズアップデートのバージョンによっても不具合が起きたりします。
となるとビルドバージョンも取得したいかもしれません。
ビルド番号はレジストリ「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion」で「CurrentBuild」にあります。
Dim str = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentBuild", Nothing)
MsgBox(str)
これで現在のビルド番号「18362」が取得できました。
システム関係
空きメモリを取得する
物理的なメモリサイズは「My.Computer.Info.TotalPhysicalMemory」で取得できます。
バイト単位なのでメガバイトに直す場合は割り算が必要です。
MsgBox(My.Computer.Info.TotalPhysicalMemory / (1024 * 1024) & "MB")
仮想メモリは、「My.Computer.Info.TotalVirtualMemory」で取得できます。
MsgBox(My.Computer.Info.TotalVirtualMemory/ (1024 * 1024) & "MB")
スクリーン
スクリーンサイズを取得します。
MsgBox(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height & "," & System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width)
特定のフォルダのパス
例えばピクチャフォルダへ画像を入れたり取得したい場合があります。
このように特定のパスを取得したい場合、「Environment.SpecialFolder.MyPictures」のようパラメータを指定します。
MsgBox(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures))
パブリックな共用のディレクトの場合は「Environment.SpecialFolder.CommonMusic」のような指定の仕方になります。
MsgBox(System.Environment.GetFolderPath(Environment.SpecialFolder.CommonMusic))