Получение цели ярлыка Microsoft Installer (юникод) - VB

Узнай цену своей работы

Формулировка задачи:

Здравствуйте ! Помогите, пожалуйста, перевести эту функцию в юникодную версию.
Спасибо.

Решение задачи: «Получение цели ярлыка Microsoft Installer (юникод)»

textual
Листинг программы
Private Declare Function MsiGetShortcutTarget Lib "Msi.dll" Alias "MsiGetShortcutTargetW" (ByVal szShortcutTarget As Long, ByVal szProductCode As Long, ByVal szFeatureId As Long, ByVal szComponentCode As Long) As Long
Private Declare Function MsiGetComponentPath Lib "Msi.dll" Alias "MsiGetComponentPathW" (ByVal szProduct As Long, ByVal szComponent As Long, ByVal lpPathBuf As Long, pcchBuf As Long) As Long
 
 
Public Function GetMSILinkTarget(Link As String) As String
    On Error Resume Next
    Const MaxFeatureLength      As Long = 38&
    Const MaxGuidLength         As Long = 38&
    Const MaxPathLength         As Long = 1024&
    Const INSTALLSTATE_LOCAL    As Long = 3&
 
    Dim lr              As Long
    Dim TargetSize      As Long
    Dim ProductCode     As String
    Dim FeatureID       As String
    Dim ComponentCode   As String
    Dim Target          As String
    
    ProductCode = Space(MaxGuidLength)
    FeatureID = Space(MaxFeatureLength)
    ComponentCode = Space(MaxGuidLength)
    
    lr = MsiGetShortcutTarget(StrPtr(Link), StrPtr(ProductCode), StrPtr(FeatureID), StrPtr(ComponentCode))
    
    TargetSize = MaxPathLength
    Target = Space(TargetSize)
    
    lr = MsiGetComponentPath(StrPtr(ProductCode), StrPtr(ComponentCode), StrPtr(Target), TargetSize)
    
    If lr = INSTALLSTATE_LOCAL Then
        GetMSILinkTarget = Trim(Left$(Target, TargetSize))
    End If
End Function

Оцени полезность:

15   голосов , оценка 4.267 из 5