Надо проверить является ли фаил ярлыком и прочесть его св-ва. Ст-ра , которую возвращает FindFirstFile почему-то не дает ответа даже на 1 вопрос ... В примерах , что я видел здесь и на rsdn , народ читает ярлыки через COM . Меня терзаютъ смутные сомнения . Неужели нет нормального(естественного) api способа обработать ярлык ? :\ Или , таки , придется подключать ради этого COM ...
Hmm а наличие у файла расширения lnk и то, что первые четыре байта 4Ch,0,0,0 не является подтверждением того, что это ярлык? И то что внутри него есть ASCII и Unicode строки - путь к ехе?
Искал я это .lnk .Раза 2 искал . Нету у них расширений . То ли у меня ярлыки не той системы , то ли ищу их не там ... Что там внутри , я это конечно видел . Но тогда надо формат файла перечитывать . (Может подскажешь где нормально описан ?) . Только вот , стоит ли оно того . :\ Из-за такой рутины парсить фаил ?
Hmm Расширений у них в проводнике не видно. Протрассируй чем проводник свойства ярлыка смотрит и найдешь API. Хотя может тоже COM используется.
Кстати , никто не в курсе , где взять iid для интерфейсов IShellLink. CLSID нагуглил . А методов нема. И в реестре тоже их не вижу .
В пакете vc++ есть такая утиль (по-моему comviewer называется). Она расписывает все com-объекты, clsid, методы, свойства, прототипы, типы параметров и т.д. и т.п. Для всех зарегистрированных в системе com объектов. И делает файлы .idl типа хидеров для подключения к с++ проектам.
?; Не нашёл. Не вспомнишь поточнее, как называется? Есть ещё oleview в Platform SDK. Правда .idl она не делает.
COM IShellLink это и ЕСТЬ НОРМАЛЬНЫЙ способ работы с ярлыками. Everytime you start using undocumented functions for reasons as such this one, stuff breaks in future versions of Windows. And its your fault!