Страница: 1 |
Вопрос: Добываем информацию о LNK-файле | Добавлено: 08.12.05 21:01 |
Автор вопроса: ![]() |
Подскажите, кто знает, как извлечь инфу про найденный ярлычок(.LNK): на какую прогу ссылается, какой файл для отображения иконки использует, какой номер ресурса. Открывать файл ярлыка и читать оттуда данные врядли будет интересно. Вот например содержимое WinRar.lnk:
L А FЏ `:sышЕ °eЅ‹чЕ шLгxЕ r щ PаOР к:iўШ +00ќ /C:\ J 1 ѓ3me PROGRA~1 2 пѕѓ3)c‚3 ° P r o g r a m F i l e s : 1 ѓ3Y{ WINRAR $ пѕѓ3Y{‚3 ° W i n R A R F 2 r Ш2Њ WINRAR.EXE , пѕѓ3Z{‚3 ° W i n R A R . e x e Q - P вXWT C:\Program Files\WinRAR\WinRAR.exe * P r o c e s s R A R , Z I P a n d o t h e r a r c h i v e f o r m a t s ( . . \ . . \ . . \ P r o g r a m F i l e s \ W i n R A R \ W i n R A R . e x e & w Проанализировав, можно догадаться, что там - короткое имя дос (формат 8.3), длинное имя, комментарий, файл иконки, её номер. НО КАК ПРОГРАММНО ЭТО ВСЁ УЗНАТЬ!?! |
Ответы | Всего ответов: 10 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #1 | Добавлено: 08.12.05 21:17 |
instr... хотя гемор конечно, может лучше способ есть |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 332 |
Профиль | Цитата | #2 | Добавлено: 08.12.05 21:18 |
instr
![]() ![]() |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 332 |
Профиль | Цитата | #3 | Добавлено: 08.12.05 21:19 |
А на АПИ ничё нету вкусненького? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() Вопросов: 3 Ответов: 164 |
Профиль | Цитата | #4 | Добавлено: 08.12.05 22:29 |
Подключи к проекту библиотеку Microsoft Shell Controls And Automation. Потом:
Public Sub PrintLinkInfo(LinkDirectory As String, LinkFileName As String) Dim shl As New Shell32.Shell Dim shlFolder As Shell32.Folder Dim shlFolderItem As Shell32.FolderItem Dim shlLink As Shell32.ShellLinkObject Set shlFolder = shl.NameSpace(LinkDirectory) Set shlFolderItem = shlFolder.ParseName(LinkFileName) Set shlLink = shlFolderItem.GetLink With shlLink Debug.Print .Arguments Debug.Print .Description Debug.Print .Hotkey Debug.Print .Path Debug.Print .ShowCommand Debug.Print .WorkingDirectory End With End Sub Единственное неудобство, что надо задавать отдельно имя фолдера и отдельно имя LNK файла. PrintLinkInfo "C:\Windows\", "XXX.lnk" |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 332 |
Профиль | Цитата | #5 | Добавлено: 08.12.05 22:42 |
Подключи к проекту библиотеку Microsoft Shell Controls And Automation
Вот!!! Раз есть библиотечкаю значт есть ф-ции АПИ!!! 2 el-paso: ДЛЛ-ки, ОЦХ-и не подходят - нужен свой читый проект (чтобы не таскать с собой эти компоненты и не запихивать разными паковальщиками - да и вааше - приятно, когда всё сам...) |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() Вопросов: 3 Ответов: 164 |
Профиль | Цитата | #6 | Добавлено: 08.12.05 22:45 |
К сожалению, эта библиотека сделана по технологии COM, и она не имеет экспортируемых функций, следовательно через API неюзабельна.
Зато она есть на всех компах с Windows, начиная с 98... |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 332 |
Профиль | Цитата | #7 | Добавлено: 08.12.05 22:50 |
Ну ладно, а как всё-таки ту же иконку достать? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() Вопросов: 3 Ответов: 164 |
Профиль | Цитата | #8 | Добавлено: 08.12.05 23:05 |
Ах, ну да...
With shlLink Debug.Print .Arguments Debug.Print .Description Debug.Print .Hotkey Debug.Print .Path Debug.Print .ShowCommand Debug.Print .WorkingDirectory Dim IconLocation As String .GetIconLocation IconLocation Debug.Print IconLocation ' это путь к иконке или EXE/DLL с иконкой End With Только надо отметить, что IconLocation будет непустой ТОЛЬКО в том случае, если иконка взята НЕ из того файла, на который ссылается LNK файл. В противном случае тебе поможет ExtractAssociatedIcon (это уже API). |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 332 |
Профиль | Цитата | #9 | Добавлено: 08.12.05 23:05 |
Там есть ф-ция GetIconLocation, а как её юзать?.....
Придёться рыскать по документации к этой ДЛЛке |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 332 |
Профиль | Цитата | #10 | Добавлено: 08.12.05 23:09 |
Короче, прогнал я..... Microsoft Shell Controls And Automation - в SHELL32.DLL - таскать её с собой - энто надо быть ПОЛНЫМ ЛАМАКОМ.... Но я не ламак.....Ну честно... ![]() |
Страница: 1 |
|