Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Добываем информацию о LNK-файле Добавлено: 08.12.05 21:01  

Автор вопроса:  SerJ
Подскажите, кто знает, как извлечь инфу про найденный ярлычок(.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
Автор ответа:
 HACKER


 

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

Вопросов: 236
Ответов: 8362
 Профиль | Цитата | #1 Добавлено: 08.12.05 21:17
instr... хотя гемор конечно, может лучше способ есть

Ответить

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



Вопросов: 24
Ответов: 332
 Профиль | Цитата | #2 Добавлено: 08.12.05 21:18
instr


:-) приколист.... :-)

Ответить

Номер ответа: 3
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | Цитата | #3 Добавлено: 08.12.05 21:19
А на АПИ ничё нету вкусненького?

Ответить

Номер ответа: 4
Автор ответа:
 el-paso



Вопросов: 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
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | Цитата | #5 Добавлено: 08.12.05 22:42
Подключи к проекту библиотеку Microsoft Shell Controls And Automation


Вот!!! Раз есть библиотечкаю значт есть ф-ции АПИ!!!
2 el-paso:
ДЛЛ-ки, ОЦХ-и не подходят - нужен свой читый проект (чтобы не таскать с собой эти компоненты и не запихивать разными паковальщиками - да и вааше - приятно, когда всё сам...)

Ответить

Номер ответа: 6
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | Цитата | #6 Добавлено: 08.12.05 22:45
К сожалению, эта библиотека сделана по технологии COM, и она не имеет экспортируемых функций, следовательно через API неюзабельна.

Зато она есть на всех компах с Windows, начиная с 98...

Ответить

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



Вопросов: 24
Ответов: 332
 Профиль | Цитата | #7 Добавлено: 08.12.05 22:50
Ну ладно, а как всё-таки ту же иконку достать?

Ответить

Номер ответа: 8
Автор ответа:
 el-paso



Вопросов: 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
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | Цитата | #9 Добавлено: 08.12.05 23:05
Там есть ф-ция GetIconLocation, а как её юзать?.....
Придёться рыскать по документации к этой ДЛЛке

Ответить

Номер ответа: 10
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | Цитата | #10 Добавлено: 08.12.05 23:09
Короче, прогнал я..... Microsoft Shell Controls And Automation - в SHELL32.DLL - таскать её с собой - энто надо быть ПОЛНЫМ ЛАМАКОМ.... Но я не ламак.....Ну честно... :-(

Ответить

Страница: 1 |

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



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