Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как программно получить версию dll библиотеки? Добавлено: 27.01.09 19:16  

Автор вопроса:  werber | Web-сайт: www.werbersoft.ru
Например, есть библиотека sample.dll с её версией 1.3. Как мне получить эту версию в переменную DllVers? Может какие API надо?

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 27.01.09 19:38
да как два пальца об асфальт! :-D
  1. string DllVers = Assembly.LoadFile("sample.dll").GetName().Version.ToString();


и только попробуй сказать, что тебе не на .NET надо было! ))))))))

Ответить

Номер ответа: 2
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #2 Добавлено: 27.01.09 19:40
Попробуй подключить Library VBIDE.(Примерно здесь - C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB)
В ней все это есть.

Ответить

Номер ответа: 3
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #3 Добавлено: 27.01.09 19:47
Если конечно
тебе не на .NET надо было! ))))))))

Ответить

Номер ответа: 4
Автор ответа:
 Father



Вопросов: 0
Ответов: 159
 Профиль | | #4 Добавлено: 27.01.09 22:34
Везет же EROS,у! В одну строчку написал.
А нам, графоманам, придется так:
  1.  
  2. Option Explicit
  3.  
  4. Private Declare Function GetFileVersionInfoSize Lib "version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
  5. 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
  6. Private Declare Function VerQueryValue Lib "version.dll" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) As Long
  7. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, ByVal Source As Long, ByVal Length As Long)
  8. Private Type LANGANDCODEPAGE: wLang As Integer: wCode As Integer: End Type
  9.  
  10. Private Function VBGetFileVersionInfo(sfile As String, verinf As String) As String
  11. Dim sz As Long, pmyinf As Long, plang As Long
  12. Dim lang  As LANGANDCODEPAGE
  13.    sz = GetFileVersionInfoSize(sfile, 0)
  14.    If Not CBool(sz) Then Exit Function
  15.    ReDim buffer(sz) As Byte
  16.    If Not CBool(GetFileVersionInfo(sfile, 0, sz, buffer(0))) Then Exit Function
  17.    VerQueryValue buffer(0), "\VarFileInfo\Translation", plang, 0
  18.    CopyMemory lang, plang, 4
  19.    VerQueryValue buffer(0), "\StringFileInfo\0" & Hex(lang.wLang) & "0" & Hex(lang.wCode) & "\" & verinf, pmyinf, sz
  20.    If Not CBool(sz) Then Exit Function
  21.    ReDim myinf(sz) As Byte
  22.    CopyMemory myinf(0), pmyinf, sz
  23.    VBGetFileVersionInfo = StrConv(myinf, vbUnicode)
  24. End Function
  25.  
  26. Private Sub Form_Load()
  27. 'Comments'InternalName'ProductName'CompanyName'LegalCopyright'ProductVersion'FileDescription'LegalTrademarks'FileVersion
  28. Debug.Print VBGetFileVersionInfo("msvbvm60.dll", "FileVersion")
  29. End Sub



З.Ы. Насчет VBIDE я не понял.

Ответить

Номер ответа: 5
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #5 Добавлено: 27.01.09 22:46
З.Ы. Насчет VBIDE я не понял.

Что именно - как подключить или как пользоватся.
Честно говоря, пробовал только в ВБА. Уточните вопрос.

Ответить

Номер ответа: 6
Автор ответа:
 Father



Вопросов: 0
Ответов: 159
 Профиль | | #6 Добавлено: 27.01.09 23:18
Скажешь тоже, подключить:)
С помощью каких объектов(функций) в VBIDE, расчитываешь получить информацию о версии отдельно взятого файла dll.
Который, кстати, может и не быть ActivXDLL.

Ответить

Номер ответа: 7
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #7 Добавлено: 27.01.09 23:34
Простите, погорячился. Почему то решил, что речь идет о библиотеке, подключенной к проекту.

Ответить

Номер ответа: 8
Автор ответа:
 werber



Вопросов: 71
Ответов: 112
 Web-сайт: www.werbersoft.ru
 Профиль | | #8
Добавлено: 29.01.09 11:28
Спасибо Father. Всё работает! Тема, я думаю, закрыта.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам