VBAでの実装ですが使用ホストアプリケーションはExcel 2000での例です。 VC++のときと同様にクラスを作成してそこに実装します。
Excelを起動してAlt + F11でVBエディタを起動してください。 ツールバーの挿入(I)からクラスモジュールを挿入して、F4のプロパティウィンドウから オブジェクト名をCFileVersionInfoとしてください。
クラスモジュールに以下を記述してください。
'クラスモジュール CFileVersionInfo/////////// Option Explicit Private Declare Function GetFileVersionInfoSize Lib _ "version.dll" Alias "GetFileVersionInfoSizeA" _ (ByVal lptstrFilename As String, _ lpdwHandle As Long) As Long Private Declare Function GetFileVersionInfo Lib _ "version.dll" Alias "GetFileVersionInfoA" _ (ByVal lptstrFilename As String, _ ByVal dwHandle As Long, _ ByVal dwLen As Long, _ lpData As Any) As Long Private Declare Function VerQueryValue Lib "version.dll" Alias "VerQueryValueA" _ (pBlock As Any, _ ByVal lpSubBlock As String, _ lplpBuffer As Long, _ puLen As Long) As Long Private Declare Sub MoveMemory Lib "kernel32.dll" Alias "RtlMoveMemory" _ |
以上でできたので試してみます。VBエディタのツールバーより 標準モジュールを追加して、以下のコードを記述&実行してください。
'標準モジュール //////////////////////////////////
Option Explicit
Public Sub test()
Dim voFvi As CFileVersionInfo
Dim i As Long
Dim vvVit As Variant
vvVit = Array("Comments", "InternalName", "ProductName", _
"CompanyName", "LegalCopyright", "ProductVersion", _
"FileDescription", "LeagalTrademarks", "PrivateBuild", _
"FileVersion", "OriginalFilename", "SpecialBuild")
Set voFvi = New CFileVersionInfo
voFvi.SetFileName "C:\Windows\system32\notepad.exe"
For i = COMMENTS To SPECIALBUILD
With ThisWorkbook.Worksheets(1)
.Cells(i + 1, 1) = vvVit(i)
.Cells(i + 1, 2) = voFvi.GetInfo(i)
End With
Next i
End Sub
|
結果は以下のようです。
同じVBでも.NETの場合はクラスライブラリに System.Diagnostics.FileVersionInfo というそのものずばりがあるのでここでは説明を割愛します。