所要達到的效果就好比通過鼠標右鍵去查看該文件屬性內容一樣.(如詳細版本內容)

解决方案 »

  1.   

    GetFileVersionInfo VB声明 
    Declare Function GetFileVersionInfo& Lib "version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Byte) 
    说明 
    从支持版本标记的一个模块里获取文件版本信息 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    lptstrFilename String,欲从中载入版本信息的一个文件的名字 
    dwHandle Long,win32中未用 
    dwLen Long,由lpData参数指定的字节数组或缓冲区的大小。用GetFileVersionInfoSize函数判断要求的缓冲区长度有多大 
    lpData Byte,指定一个字节缓冲区的第一个字节。该缓冲区用于装载文件的版本信息 
    注解 
    在win32下不用dwHandle参数
      

  2.   

    Public Declare Function GetFileVersionInfoSize Lib "version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
    说明
    针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区
    返回值
    Long,容纳文件的版本资源所需的缓冲区长度。如文件不包含版本信息,则返回一个0值。会设置GetLastError
    参数表
    lptstrFilename -  String,包含了版本资源的一个文件的名字
    lpdwHandle -----  Long,在这个变量中载入0值在win32下不用lpdwHandle参数
      

  3.   

    Public Function GetFileVerInfo(FullFileName As String) As String()
        Dim rc As Long, lDummy As Long, sBuffer() As Byte
        Dim lBufferLen As Long, lVerPointer As Long
        Dim bytebuffer(260) As Byte
        Dim Lang_Charset_String As String
        Dim HexNumber As Long, Buffer As String
        Dim i As Integer, strtemp As String
        Dim strFileVer(5) As String  For i = 0 To 5
        strFileVer(i) = "" '"No Version Info available!"
      Next
      '*** Get size ****
      lBufferLen = GetFileVersionInfoSize(FullFileName, lDummy)
      If lBufferLen < 1 Then
          GetFileVerInfo = strFileVer
          Exit Function
      End If  '**** Store info to udtVerBuffer struct ****
      ReDim sBuffer(lBufferLen)
      rc = GetFileVersionInfo(FullFileName, 0&, lBufferLen, sBuffer(0))
            If rc = 0 Then
                GetFileVerInfo = strFileVer
                Exit Function '"No Version Info available!"
            End If
      rc = VerQueryValue(sBuffer(0), "\VarFileInfo\Translation", lVerPointer, lBufferLen)
            If rc = 0 Then
                GetFileVerInfo = strFileVer
                Exit Function '"No Version Info available!"
            End If
            
            
        strFileVer(2) = "CompanyName"
        strFileVer(4) = "FileDescription"
        strFileVer(0) = "FileVersion"
        strFileVer(1) = "InternalName"
        strFileVer(3) = "LegalCopyright"
            MoveMemory bytebuffer(0), lVerPointer, lBufferLen
        HexNumber = bytebuffer(2) + bytebuffer(3) * &H100 + bytebuffer(0) * &H10000 + bytebuffer(1) * &H1000000
        rc = CLng(bytebuffer(0) + bytebuffer(1) * &H100)
        Lang_Charset_String = Hex(HexNumber)
        
        
        Do While Len(Lang_Charset_String) < 8
            Lang_Charset_String = "0" & Lang_Charset_String
        Loop
        
        strtemp = String(260, Asc(Syn_kg))
        rc = VerLanguageName(rc, strtemp, CLng(255))
        strFileVer(5) = StripTerminator(strtemp)
      
        strtemp = ""
        For i = 0 To 4
            Buffer = String(260, Asc(Syn_kg))
            strtemp = "\StringFileInfo\" & Lang_Charset_String & Syn_pzh & strFileVer(i)
            rc = VerQueryValue(sBuffer(0), strtemp, lVerPointer, lBufferLen)
            If rc <> 0 Then
                lstrcpy Buffer, lVerPointer
                Buffer = StripTerminator(Buffer)
            Else
                Buffer = ""
            End If
            strFileVer(i) = Buffer
        Next i
    GetFileVerInfo = strFileVer
    End Function