Страница: 1 |
Вопрос: Как программно получить версию dll библиотеки?
Добавлено: 27.01.09 19:16
Автор вопроса: werber | Web-сайт: www.werbersoft.ru
Например, есть библиотека sample.dll с её версией 1.3. Как мне получить эту версию в переменную DllVers? Может какие API надо?
Ответить
Номер ответа: 4Автор ответа: Father
Вопросов: 0Ответов: 159
Профиль | | #4
Добавлено: 27.01.09 22:34
Везет же EROS ,у! В одну строчку написал.
А нам, графоманам, придется так:
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 Any, puLen As Long ) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, ByVal Source As Long , ByVal Length As Long )
Private Type LANGANDCODEPAGE: wLang As Integer : wCode As Integer : End Type
Private Function VBGetFileVersionInfo(sfile As String , verinf As String ) As String
Dim sz As Long , pmyinf As Long , plang As Long
Dim lang As LANGANDCODEPAGE
sz = GetFileVersionInfoSize(sfile, 0)
If Not CBool (sz) Then Exit Function
ReDim buffer(sz) As Byte
If Not CBool (GetFileVersionInfo(sfile, 0, sz, buffer(0))) Then Exit Function
VerQueryValue buffer(0), "\VarFileInfo\Translation" , plang, 0
CopyMemory lang, plang, 4
VerQueryValue buffer(0), "\StringFileInfo\0" & Hex(lang.wLang) & "0" & Hex(lang.wCode) & "\" & verinf, pmyinf, sz
If Not CBool (sz) Then Exit Function
ReDim myinf(sz) As Byte
CopyMemory myinf(0), pmyinf, sz
VBGetFileVersionInfo = StrConv(myinf, vbUnicode)
End Function
Private Sub Form_Load()
Debug.Print VBGetFileVersionInfo("msvbvm60.dll" , "FileVersion" )
End Sub
З.Ы. Насчет VBIDE я не понял.
Ответить
Страница: 1 |
Поиск по форуму