Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 75
1

Как из программы узнать имя файла, на который ссылается ярлык?

12.05.2016, 22:42. Просмотров 1003. Ответов 7
Метки нет (Все метки)

Встала вот задача удалить с рабочего стола определённый ярлык.
Разобрался, как найти путь к папке рабочего стола, начинаю в цикле перебирать
все лежащие на рабочем столе файлы - ярлыки.
Нужно удалить из них только тот, который ссылается на определённый файл.
Как сделать эту проверку?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2016, 22:42
Ответы с готовыми решениями:

Как узнать имя переменной которая ссылается на созданный объект?
Есть класс, допустим: class MyClass { var $id; function MyClass() { $this->id =...

Как узнать настоящее имя файла, который находится по ссылке?
есть сылка http://wincmd.ru/download.php?id=wdx_media фаил выкочял (с помощью скрипта) но вот как...

Как изменять имя файла который я хочу открыть не с программы?
помогите пожалуйста: есть программа на visual c++ которая читает какойто файл и записует...

Как в iframe задать кодировку для текстового файла, на который он ссылается
Есть тег iframe, который ссылается на текстовый файл. В текстовом файле есть русский текст. Он...

7
834 / 729 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
12.05.2016, 23:02 2
Пробуй: самое главное ты в переменную fileName полный путь до файла и имя с расширением пропиши.
Если у тебя ярлык то вроде как lnk расширение.
Delphi
1
2
3
   if DeleteFile(fileName)
   then ShowMessage(fileName+' удалён')
   else ShowMessage(fileName+' не удалён');
0
пофигист широкого профиля
4173 / 2716 / 770
Регистрация: 15.07.2013
Сообщений: 15,796
13.05.2016, 00:32 3

Не по теме:

Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Пробуй
Подсказка - высший класс!



Добавлено через 5 минут
Цитата Сообщение от AHTOIIIKA Посмотреть сообщение
Как сделать эту проверку?
Изучай Интерфейс IShellLink
0
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 75
13.05.2016, 10:50  [ТС] 4
Спасибо, изучаю сейчас IShellLink...
А вот в предложенном коде - удаление файла "filename" - разве ярлык не может в имени содержать
любой другой текст? Или прямо в имени ярлыка зашито имя программы с которой он связан?
Что-то не верится что всё так примитивно)
0
3308 / 2856 / 771
Регистрация: 29.08.2013
Сообщений: 19,223
Записей в блоге: 1
13.05.2016, 10:56 5
Цитата Сообщение от AHTOIIIKA Посмотреть сообщение
Что-то не верится что всё так примитивно)
открой блокнотом файл lnk
0
пофигист широкого профиля
4173 / 2716 / 770
Регистрация: 15.07.2013
Сообщений: 15,796
13.05.2016, 10:56 6
Цитата Сообщение от AHTOIIIKA Посмотреть сообщение
разве ярлык не может в имени содержать
любой другой текст?
Может.
0
Хитрая блондиночка $)
1460 / 974 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
13.05.2016, 11:01 7
Лично я использую такую функцию:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function GetPropertyFromLNK(LinkFileName: string
            ): String;
var
        LNKObject: IUnknown;
        LNKSLink: IShellLink;
        LNKPFile: IPersistFile; 
        FileInfo: TWin32FINDDATA;
        WidePath: array[0..MAX_PATH] of WideChar;
        Buff: array[0..MAX_PATH] of Char;
begin
 //https://msdn.microsoft.com/en-us/library/windows/desktop/bb774950(v=vs.85).aspx
     Error:='';
        if (fileexists(Linkfilename) = false) then
          exit;
      if not Assigned(LNKObject) then begin
                  LNKObject := CreateComObject(CLSID_ShellLink);
                  LNKPFile := LNKObject as IPersistFile;
                  LNKSLink := LNKObject as IShellLink;
      end;
        WidePath:=WideString(LinkFileName);
            FileInfo.dwReserved0:=0;
            FillChar(FileInfo,sizeof(FileInfo),0);
        if LNKPFile.Load(WidePath, STGM_READ)=0 then begin
         if LNKSLink.GetPath(Buff, Max_PATH, FileInfo, SLGP_UNCPRIORITY)=0 then  result := buff
         else Error:='GetPropertyFromLNK Load error: '+IntToStr(GetLastOSError)+' '+SysErrorMessage(GetLastOSError);
        end
       else Error:='GetPropertyFromLNK Load error: '+IntToStr(GetLastOSError)+' '+SysErrorMessage(GetLastOSError);
end;
Для получения ссылки на файл в линке.
0
BOGG ART
13.05.2016, 11:32     Как из программы узнать имя файла, на который ссылается ярлык?
  #8

Не по теме:

А зачем "= false"? В параметре передали несуществующий файл - не считается ошибкой? И может надёжнее через Querylnterface, а не As?

0
13.05.2016, 11:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2016, 11:32
Привет! Вот еще темы с ответами:

Как узнать имя процесса, зная имя программы?
Здравствуйте, подскажите пожалуйста, как узнать имя процесса выполняемой программы, зная имя этой...

Узнать имя исполняемого файла, не программы
Здравствуйте! Обрисую ситуацию: есть у меня файл Maidan.lol, запуск его производится с помощью...

Как узнать полное имя файла зная его краткое имя?
например при запуске программы достаточно написать "Excel" или "Calc" при этом система уже в курсе...

Как узнать имя компьютера который подключился к базе ?
Здравствуйте. Как узнать имя компьютера который подключился к базе? Допустим я вошел, внес какие-то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.