Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16

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

09.10.2014, 22:21. Показов 1569. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте !

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

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Declare Function MsiGetShortcutTarget Lib "Msi.dll" Alias "MsiGetShortcutTargetA" (ByVal szShortcutTarget As String, ByVal szProductCode As String, ByVal szFeatureId As String, ByVal szComponentCode As String) As Long
Private Declare Function MsiGetComponentPath Lib "Msi.dll" Alias "MsiGetComponentPathA" (ByVal szProduct As String, ByVal szComponent As String, ByVal lpPathBuf As String, 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 + 1)
    FeatureID = Space(MaxFeatureLength + 1)
    ComponentCode = Space(MaxGuidLength + 1)
    
    lr = MsiGetShortcutTarget(Link, ProductCode, FeatureID, ComponentCode)
    
    TargetSize = MaxPathLength
    Target = Space(TargetSize)
    
    lr = MsiGetComponentPath(ProductCode, ComponentCode, Target, TargetSize)
    
    If lr = INSTALLSTATE_LOCAL Then
        GetMSILinkTarget = Trim(Left$(Target, TargetSize))
    End If
End Function
Спасибо.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.10.2014, 22:21
Ответы с готовыми решениями:

Получение цели ярлыков URL (какой код быстрее?)
Приветствую! Воспользовался интерфейсом IUniformResourceLocatorW. Задача - получить цель нескольких ярлыков URL и в идеале, чтобы не...

Использование Microsoft Installer
Доброго времени суток! Может кто в этом форуме сможет помочь!? Всегда делал инсталяции на VB 6.0. Всё просто, как божий день. А...

Microsoft Installer для .NET
Доброго времени суток! Всегда делал инсталяции на VB 6.0. Всё просто, как божий день. А тут перешёл на .NET, и... есть проблема - не...

1
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
11.10.2014, 15:52
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2014, 15:52
Помогаю со студенческими работами здесь

Получение свойств Ярлыка Windows
Захотелось написать утилитку для обработки файлов, созданных другой программой. В качестве исходных данных достаточно взять из ярлыка...

Назначение прав доступа папкам в установщике Microsoft Installer DB (msi)
Добрый день! На данный момент я прохожу практику, но я не могу найти ни литературы, ни просто помощи в работе со скриптом. Тем более, что...

Получение пути из ярлыка drag in drop delphi
Имеется Edit1 на форме, при перетаскивании ярлыка на форму, необходимо, чтобы путь ярлыка, прописался в Edit1. Кто подскажет, как это...

Получение символа по юникод-коду символа
Добрый день. Скажите, есть ли Win32 API функция для получения символа по юникод-коду символа? Например есть такой юникод-код символа:...

Найти точки от цели до цели
Добрый день, нужна помощь в задаче Изначально заправок 8. 1) Radion 2) kesmolovo 3) statrek 4) koloboncho 5) trinski 6)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru