Перейти к содержимому

Фотография

Как узнать версию файла?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 Rational-IT

Rational-IT

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 29 марта 2010 - 06:13

Добрый день!
Подскажи пожалуйста новичку, как программно через Rational-Robot узнать версию файла (exe, dll в основном) :blush:
  • 0

#2 Zenturio

Zenturio

    Опытный участник

  • Members
  • PipPipPipPip
  • 386 сообщений
  • ФИО:Дмитрий
  • Город:Смоленск - Москва


Отправлено 29 марта 2010 - 17:47

Хм, а вам зачем?
  • 0

#3 Pryanik

Pryanik

    Постоянный участник

  • Members
  • PipPipPip
  • 214 сообщений
  • Город:МОСКВА

Отправлено 30 марта 2010 - 09:46

Добрый день!
Подскажи пожалуйста новичку, как программно через Rational-Robot узнать версию файла (exe, dll в основном) :blush:

Напишите на VBScript процедуру и вызовите ее в RR.
  • 0

#4 Rational-IT

Rational-IT

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 30 марта 2010 - 11:16

Всем спасибо, разобрался!

Вот код, может кому и понадобиться :blush:

[codebox]Declare Sub CopyMem Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) As Long
Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
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

Type VS_FIXEDFILEINFO
Signature As Long
StrucVersionl As Integer
StrucVersionh As Integer
FileVersionMSl As Integer
FileVersionMSh As Integer
FileVersionLSl As Integer
FileVersionLSh As Integer
ProductVersionMSl As Integer
ProductVersionMSh As Integer
ProductVersionLSl As Integer
ProductVersionLSh As Integer
FileFlagsMask As Long
FileFlags As Long
FileOS As Long
FileType As Long
FileSubtype As Long
FileDateMS As Long
FileDateLS As Long
End Type

Function FileVersionNo(sFileName As String) As String
Dim lFileHwnd As Long, lRet As Long, lBufferLen As Long, lplpBuffer As Long, lpuLen As Long
Dim abytBuffer() As Long
Dim tVerInfo As VS_FIXEDFILEINFO
Dim sBlock As String
Dim sStrucVer As String
Dim lentVerInfo As Long

lBufferLen = GetFileVersionInfoSize(sFileName, lFileHwnd)
If lBufferLen = 0 Then
Exit Function
End If

ReDim abytBuffer(lBufferLen)
Call GetFileVersionInfo(sFileName, 0&, lBufferLen, abytBuffer(0))
Call VerQueryValue(abytBuffer(0), "\", lplpBuffer, lpuLen)
Call CopyMem(tVerInfo, ByVal lplpBuffer, lentVerInfo)
lentVerInfo = 52
Call CopyMem(tVerInfo, ByVal lplpBuffer, lentVerInfo)

sStrucVer = Format$(tVerInfo.StrucVersionh) & "." & Format$(tVerInfo.StrucVersionl)

FileVersionNo = Format$(tVerInfo.FileVersionMSh) & "." & Format$(tVerInfo.FileVersionMSl, "00") & "."
End Function

Sub Main
msgbox FileVersionNo("C:\filename.exe")
End Sub
[/codebox]
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных