![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
midavik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 13.6.2007 Репутация: 1 Всего: 1 |
меня интересует можно ли при помощи интерфейса IShellLink либо какого-нибудь другого вытащить всю информацию о файлах с расширением LNK?
В следующем примере показывается как вытащить некоторые параметры:
но согласно недокументированному формату структуры таких файлов http://www.stdlib.com/art6-Shortcut-File-Format-lnk.html там гораздо больше информации о файле. А интерфейс IShellLink насколько я понял не позволяет извлечь такую информацию. А именно особенно интересуют такие параметры как: 1)Type of volume 2)Volume serial number 3)Volume label 4)Network share name Я конечно могу, зная на каком диске находится этот файл, узнать все эти св-ва диска и компьютера, но меня интересует именно та информация о этих параметрах которая находится в самом файле. И еще может кто знает хранит ли файл ярлыка в себе помимо всего прочего еще и информацию о MAC - адресе машины? |
|||
|
||||
Mikh@il |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
||||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Mikh@il, чем этот пример лучше того что привел автор?
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Dragin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 29.9.2007 Репутация: нет Всего: нет |
Type
TLinkParamList = Array[1..4] Of String; Function GetLinkInfo(FileName:PWideChar):TLinkParamList; { 1 - Полное и директория родного файла 2 - Коментарий 3 - Директория родного файла 4 - Тип окна Uses - ShlObj,ComObj,ActiveX } Var ShellLink : IShellLink; IUnk: IUnknown; ShellFile: IPersistFile; Buffer : Array [0..255] of Char; TempInfo : _Win32_Find_DataA; XShowCmd:Integer; Begin FillChar(Result,SizeOf(Result),Byte(0)); IUnk := CreateComObject(CLSID_ShellLink); ShellLink := IUnk as IShellLink; ShellFile := IUnk as IPersistFile; ShellFile.Load(FileName,STGM_READWRITE); ShellLink.GetPath(Buffer,SizeOf(Buffer),TempInfo,0); Result[1] := Buffer; ShellLink.GetDescription(Buffer,SizeOf(Buffer)); Result[2] := Buffer; ShellLink.GetWorkingDirectory(Buffer,SizeOf(Buffer)); Result[3] := Buffer; ShellLink.GetShowCmd(XShowCmd); Case XShowCmd Of 1 : Result[4] := 'Обычный'; 7 : Result[4] := 'Свёрнутый'; 3 : Result[4] := 'Развёрнутый'; End; Pointer(ShellFile) := Nil; Pointer(ShellLink) := Nil; End; Вот довно писал, что то типо |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
А если внимательно почитать что спрашивает автор? Это уже 2я копия кода аналоичного тому что привел автор поста.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |