Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2015, 13:57   #1
str0b
Новичок
Джуниор
 
Регистрация: 25.08.2015
Сообщений: 2
По умолчанию Проверка наличия ярлыка

Приветствую!

Помогите с таким вопросом.
Нужно на Дельфи написать функцию, которая будет проверять наличие ярлыка на рабочем столе.

Приём, имя заранее неизвестно. Известная только конкретная ссылка этого ярлыка.

каким способом можно это реализовать?
функции по работе с файлами, как я понял, тут особо не помогут
str0b вне форума Ответить с цитированием
Старый 25.08.2015, 14:20   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
функции по работе с файлами, как я понял, тут особо не помогут
Не совсем... Можно конечно самому по спеке разобрать формат, но нафик надо.

Получаете все ярлыки, а енто файлы в опред. папках. А потом типа
Код:
    hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl); 
    if (SUCCEEDED(hres)) 
    { 
        IPersistFile* ppf; 
 
        // Get a pointer to the IPersistFile interface. 
        hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf); 
        
        if (SUCCEEDED(hres)) 
        { 
            WCHAR wsz[MAX_PATH]; 
 
            // Ensure that the string is Unicode. 
            MultiByteToWideChar(CP_ACP, 0, lpszLinkFile, -1, wsz, MAX_PATH); 
 
            // Add code here to check return value from MultiByteWideChar 
            // for success.
 
            // Load the shortcut. 
            hres = ppf->Load(wsz, STGM_READ); 
            
            if (SUCCEEDED(hres)) 
            { 
                // Resolve the link. 
                hres = psl->Resolve(hwnd, 0); 

                if (SUCCEEDED(hres)) 
                { 
                    // Get the path to the link target. 
                    hres = psl->GetPath(szGotPath, MAX_PATH, (WIN32_FIND_DATA*)&wfd, SLGP_SHORTPATH); 

                    if (SUCCEEDED(hres)) 
                    {
И сравниваете пути...
p51x вне форума Ответить с цитированием
Старый 25.08.2015, 15:23   #3
str0b
Новичок
Джуниор
 
Регистрация: 25.08.2015
Сообщений: 2
По умолчанию

увы, мои познания настолько поверхностны...
думал проще будет, типа работы с файлами, но с другого ракурса
а тут вон чего))
str0b вне форума Ответить с цитированием
Старый 25.08.2015, 15:39   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

ну. как я уже сказал, спека есть... открывайте папку и парсите все файлы ярлыков в ней
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка наличия флешки 1@q Общие вопросы Delphi 4 29.06.2013 18:22
Проверка наличия элемента в БД WarAngel.alk PHP 5 28.09.2011 10:23
Проверка наличия файла nervniy Работа с сетью в Delphi 4 28.10.2010 19:47
Проверка наличия файла kain151 Microsoft Office Word 3 10.03.2010 14:50
Проверка наличия файла russian-stalker Общие вопросы Delphi 4 31.08.2008 19:27