Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: атрибуты dll`ки Добавлено: 03.08.05 15:11  

Автор вопроса:  alexfrol | ICQ: 165999297 
Как получить атрибуты длл'ки: кто создал, когда, версия, описание?

Ответить

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

Номер ответа: 1
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #1 Добавлено: 03.08.05 19:35
Увы, на .NET не знаю как, но это перевести легко:


'********************************************************************
'*               Написано 16.12.2004 году (Slash)                   *
'*                  e-mail: alexander@vbnet.ru                      *
'********************************************************************
Option Explicit

Private mFN As String

Private mComments As String
Private mCompanyName As String
Private mFileDescription As String
Private mFileVersion As String
Private mInternalName As String
Private mLegalCopyright As String
Private mLegalTrademarks As String
Private mOriginalFilename As String
Private mProductName As String
Private mProductVersion As String
Private mPrivateBuild As String
Private mSpecialBuild As String

Private Declare Function GetFileVersionInfo Lib "version" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Any) As Long
Private Declare Function GetFileVersionInfoSize Lib "version" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
Private Declare Function VerQueryValue Lib "version" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lpBuffer As Any, puLen As Long) As Long
Private Declare Function VerLanguageName Lib "kernel32" Alias "VerLanguageNameA" (ByVal wLang As Long, ByVal szLang As String, ByVal nSize As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Type LangCP
    wLang As Integer
    wCP As Integer
End Type
Public Property Get Comments() As String
    Comments = mComments
End Property
Public Property Get CompanyName() As String
    CompanyName = mCompanyName
End Property
Public Property Get FileName() As String
    FileName = mFN
End Property
Public Property Let FileName(ByVal NewFN As String)
    mFN = NewFN
    LoadInfo
End Property
Public Property Get FileVersion() As String
    FileVersion = mFileVersion
End Property
Public Property Get FileDescription() As String
    FileDescription = mFileDescription
End Property
Private Function GetValue(ByRef DataByte As Byte, sName As String) As String
    Dim s$, dwLen&, lPtr&, iInStr&
    VerQueryValue DataByte, sName, lPtr, dwLen
    s = String$(dwLen, 0)
    CopyMemory ByVal s, ByVal lPtr, dwLen
    iInStr = InStr(s, vbNullChar)
    If iInStr <> 0 Then s = Left$(s, iInStr - 1)
    GetValue = s
End Function
Public Property Get InternalName() As String
    InternalName = mInternalName
End Property
Public Property Get LegalCopyright() As String
    LegalCopyright = mLegalCopyright
End Property
Public Property Get LegalTrademarks() As String
    LegalTrademarks = mLegalTrademarks
End Property
Private Sub LoadInfo()
    Dim hVer&, b() As Byte, s$, dwLen&, lcp As LangCP, lPtr&, sLangStr$
    dwLen = GetFileVersionInfoSize(mFN, hVer)
    If dwLen = 0 Then Exit Sub
    ReDim b(dwLen - 1)
    GetFileVersionInfo mFN, hVer, dwLen, b(0)
    
    dwLen = 256
    VerQueryValue b(0), "\VarFileInfo\Translation", lPtr, dwLen
    s = String$(dwLen, 0)
    CopyMemory lcp, ByVal lPtr, 4
    
    sLangStr = "\StringFileInfo\"
    s = Hex$(lcp.wLang)
    sLangStr = sLangStr & String$(4 - Len(s), "0";) & s
    s = Hex$(lcp.wCP)
    sLangStr = sLangStr & String$(4 - Len(s), "0";) & s & "\"
    
    mComments = GetValue(b(0), sLangStr & "Comments";)
    mCompanyName = GetValue(b(0), sLangStr & "CompanyName";)
    mFileDescription = GetValue(b(0), sLangStr & "FileDescription";)
    mFileVersion = GetValue(b(0), sLangStr & "FileVersion";)
    mInternalName = GetValue(b(0), sLangStr & "InternalName";)
    mLegalCopyright = GetValue(b(0), sLangStr & "LegalCopyright";)
    mLegalTrademarks = GetValue(b(0), sLangStr & "LegalTrademarks";)
    mOriginalFilename = GetValue(b(0), sLangStr & "OrgignalFilename";)
    mPrivateBuild = GetValue(b(0), sLangStr & "PrivateBuild";)
    mProductName = GetValue(b(0), sLangStr & "ProductName";)
    mProductVersion = GetValue(b(0), sLangStr & "ProductVersion";)
    mSpecialBuild = GetValue(b(0), sLangStr & "SpecialBuild";)
End Sub
Public Property Get OriginalFilename() As String
    OriginalFilename = mOriginalFilename
End Property
Public Property Get PrivateBuild() As String
    PrivateBuild = mPrivateBuild
End Property
Public Property Get ProductName() As String
    ProductName = mProductName
End Property
Public Property Get ProductVersion() As String
    ProductVersion = mProductVersion
End Property
Public Property Get SpecialBuild() As String
    SpecialBuild = mSpecialBuild
End Property

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 03.08.05 20:35
Это ресурсы... см. пример Resource Viewer... на АПИ конечно (VB6), ну да другого ничего нет...

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 03.08.05 20:59
Попробуйте использовать Reflection.

Ответить

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



ICQ: 165999297 

Вопросов: 4
Ответов: 5
 Профиль | | #4 Добавлено: 04.08.05 10:30
Reflection не прокатывает.
Dim a As System.Reflection.Assembly
на a.LoadFile(fileName) вываливается эксепшн, формат неправильный. видимо только дотнетовские dll'ки понимает

Ответить

Номер ответа: 5
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 04.08.05 10:40
А.. Так бы сразу и говорил, что native dll... Тогда только через Win32 API (см. выше).

Ответить

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



ICQ: 165999297 

Вопросов: 4
Ответов: 5
 Профиль | | #6 Добавлено: 04.08.05 13:28
а где этот примерчик валяется? я чето найти не могу

Ответить

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



ICQ: 165999297 

Вопросов: 4
Ответов: 5
 Профиль | | #7 Добавлено: 04.08.05 13:53
делаю вот такую фигню

Imports Scripting

     ;Dim FSys As New FileSystemObject
        ;Dim f As Scripting.File
        f = FSys.GetFile(path)
        _row = _Table.NewRow
        _row.Item(0) = f.Name
        _row.Item(1) = f.Path
        _row.Item(2) = FSys.GetFileVersion(path)
        _row.Item(3) = f.DateCreated
        _Table.Rows.Add(_row)
        GridControl1.DataSource = _Table

на 2 колонку прога ниче не выводит, а на 3 сегодняшнюю дату, винда при этом показывает другую дату

Ответить

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



ICQ: 165999297 

Вопросов: 4
Ответов: 5
 Профиль | | #8 Добавлено: 04.08.05 15:28
все заработало, косяк с библиотекой был

Ответить

Страница: 1 |

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



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