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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2009, 10:51   #11
berlios
 
Регистрация: 16.08.2009
Сообщений: 8
По умолчанию

Что бы на форме были Ярлыки(картинка,при нажатии на которую открывается фаил присвоенный ей)
berlios вне форума Ответить с цитированием
Старый 16.08.2009, 10:53   #12
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
Сообщение от berlios Посмотреть сообщение
Что бы на форме были Ярлыки(картинка,при нажатии на которую открывается фаил присвоенный ей)
Ну вот пост от puporev, там как раз есть пример, он отлично подойдет под ваши нужды
zotox вне форума Ответить с цитированием
Старый 16.08.2009, 10:56   #13
berlios
 
Регистрация: 16.08.2009
Сообщений: 8
По умолчанию

puporev, А как сделать что бы были не мои картинки,а с ярлыка на который я указываю!?

Ладно.
А как тогда узнать куда ссылается ярлык, что бы потом можно было добавить к путю *.Ico ?

Последний раз редактировалось Stilet; 17.08.2009 в 09:00.
berlios вне форума Ответить с цитированием
Старый 16.08.2009, 11:09   #14
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
А как сделать что бы были не мои картинки,а с ярлыка на который я указываю!?
Обычно в комплекте программы есть файл иконки. Вот его и вставьте в Image с помощью свойства Picture-> Load
puporev вне форума Ответить с цитированием
Старый 16.08.2009, 11:10   #15
berlios
 
Регистрация: 16.08.2009
Сообщений: 8
По умолчанию

А как тогда узнать куда ссылается ярлык
berlios вне форума Ответить с цитированием
Старый 16.08.2009, 11:13   #16
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Так Вы это и прописываете в обработчике события
Код:
ShellExecute (Form1.Handle, nil, '"D:\Мои документы\Календарь.xls"', nil, nil, SW_RESTORE);
Не забудьте добавить в Uses модуль ShellAPI
puporev вне форума Ответить с цитированием
Старый 16.08.2009, 11:14   #17
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
Сообщение от berlios Посмотреть сообщение
А как тогда узнать куда ссылается ярлык
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,ShlObj,ActiveX, ComObj;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
     function NameFromLink(LinkFileName: string): string;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


function Tform1.NameFromLink(LinkFileName: string): string;
var
  MyObject: IUnknown;
  MySLink: IShellLink;
  MyPFile: IPersistFile;
  FileInfo: TWin32FINDDATA;
  WidePath: array[0..MAX_PATH] of WideChar;
  Buff: array[0..MAX_PATH] of Char;
begin
  Result := '';
  if (fileexists(Linkfilename) = false) then
    exit;
  MyObject := CreateComObject(CLSID_ShellLink);
  MyPFile := MyObject as IPersistFile;
  MySLink := MyObject as IShellLink;
  StringToWideChar(LinkFileName, WidePath, SizeOf(WidePath));
  MyPFile.Load(WidePath, STGM_READ);
  MySLink.GetPath(Buff, Max_PATH, FileInfo, SLGP_UNCPRIORITY);
  Result := buff;
end;


procedure TForm1.FormCreate(Sender: TObject);
var
 SR:TSearchRec;
 FindRes:integer;
 l,s:string;
begin
 s:='c:\1\lalala.lnk';
 l:=ExtractFileName(NameFromLink(s));
 edit1.text:=StringReplace(s,ExtractFileName(s),l,[rfReplaceAll, rfIgnoreCase]);
end;

end.
В edit1.text будет путь, давайте вы будете пользоваться гуглом а не мы за вас будем проект строить, так как вопросы детские, если что не понятно - спрашивайте

puporev это он запускает :-) а автору нужно чтобы ярлык вывел путь до программы :-)

Последний раз редактировалось zotox; 16.08.2009 в 11:17.
zotox вне форума Ответить с цитированием
Старый 16.08.2009, 11:15   #18
berlios
 
Регистрация: 16.08.2009
Сообщений: 8
По умолчанию

Большое спасибо за помощь!
berlios вне форума Ответить с цитированием
Старый 16.08.2009, 11:15   #19
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
давайте вы будете пользоватся гуглом
Поддерживаю. Я например все сделал прямо сейчас, никогда раньше это не делал.
puporev вне форума Ответить с цитированием
Старый 16.08.2009, 11:28   #20
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
Сообщение от berlios Посмотреть сообщение
puporev, А как сделать что бы были не мои картинки,а с ярлыка на который я указываю!?
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShlObj,ActiveX, ComObj, ExtCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    Edit1: TEdit;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
  private
     function NameFromLink(LinkFileName: string): string;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


function Tform1.NameFromLink(LinkFileName: string): string;
var
  MyObject: IUnknown;
  MySLink: IShellLink;
  MyPFile: IPersistFile;
  FileInfo: TWin32FINDDATA;
  WidePath: array[0..MAX_PATH] of WideChar;
  Buff: array[0..MAX_PATH] of Char;
begin
  Result := '';
  if (fileexists(Linkfilename) = false) then
    exit;
  MyObject := CreateComObject(CLSID_ShellLink);
  MyPFile := MyObject as IPersistFile;
  MySLink := MyObject as IShellLink;
  StringToWideChar(LinkFileName, WidePath, SizeOf(WidePath));
  MyPFile.Load(WidePath, STGM_READ);
  MySLink.GetPath(Buff, Max_PATH, FileInfo, SLGP_UNCPRIORITY);
  Result := buff;
end;


procedure TForm1.FormCreate(Sender: TObject);
var
 SR:TSearchRec;
 FindRes:integer;
 l,s:string;
begin
 s:='c:\1\lalala.lnk';
 l:=ExtractFileName(NameFromLink(s));
 if Copy(l,pos('.',l),length(l))='.txt' then
  begin
    Image1.Picture.LoadFromFile('D:\Documents and Settings\admin\Мои документы\favicon.ico');
  end;
 edit1.text:='Формат файла ярлыка: '+Copy(l,pos('.',l),length(l));

 //В моем случае c:\1\lalala.lnk будет ссылаться на файл с расширением .txt
end;

end.

Последний раз редактировалось zotox; 16.08.2009 в 11:50.
zotox вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение файлов tif на форме AlexandrSid Общие вопросы Delphi 7 28.05.2009 16:15
Можно ли как то узнать координаты ярлыков и папок и программно перемещать их? [Smarik] Win Api 3 21.12.2008 12:50
Отображение в форме и таблице двух столбцов подстановок smoky Microsoft Office Access 5 01.07.2008 09:27
Пуска нет и ярлыков никаких! Папка Мои документы и всё! anton14 Свободное общение 8 26.04.2008 13:31
Отображение картинок или метафайлов на форме. Hellen Общие вопросы Delphi 3 19.02.2007 10:44