Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.06;
Скачать: CL | DM;

Вниз

чтение данных о ярлыке   Найти похожие ветки 

 
_Alex_ ©   (2002-04-03 06:27) [0]

Привет Всем
Мучаюсь над решением вопроса - чтение данных о ярлыке т.е. путь,
рабочая папка и т.д. набрел на какой-то FAQ, пример не компилируется.

Помогите разобраться!

{
Can"t use Standard OpenDialog since it really
opens .lnk file and returns the command string,
associated with link.
}
unit SLI_Unit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, OLE2, ShlObj, ComCtrls, Menus;
type
TForm1 = class(TForm)
Edit0: TEdit;
Button1: TButton;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label7: TLabel;
Edit1: TEdit;
HotKey1: THotKey;
procedure Button1Click(Sender: TObject);
procedure ShowLinkInfo;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowLinkInfo;
end;
procedure TForm1.ShowLinkInfo;
Var
Desc : Array[0..MAX_PATH] of Char;
SL : IShellLink;
PF : IPersistFile;
HRES : HRESULT;
FD : TWin32FindData;
begin
CoInitialize(Nil);
HRes := COCreateInstance(CLSID_ShellLink, Nil, CLSCTX_INPROC_SERVER,
IID_IShellLink, SL);
If Succeeded(HRes) Then
Begin
HRes := SL.QueryInterface(IID_IPersistFile, PF);
If Succeeded(HRes) Then
Begin
Edit0.Text := "D:\LINKDEMO.LNK";
PF.Load("D:\LINKDEMO.LNK", STGM_READ);
SL.Resolve(Handle, SLR_ANY_MATCH);
SL.GetPath(Desc, MAX_PATH, FD, SLGP_UNCPRIORITY);
Edit1.Text := StrPas(Desc);
SL.GetDescription(Desc, MAX_PATH);
Edit2.Text := StrPas(Desc);
SL.GetWorkingDirectory(Desc, MAX_PATH);
Edit3.Text := StrPas(Desc);
SL.GetArguments(Desc, MAX_PATH);
Edit4.Text := StrPas(Desc);
PF.Release;
SL.Release;
End;
End;
end;
end.


 
Suntechnic ©   (2002-04-03 07:30) [1]

Попробуй так:
unit SLI_Unit;
{
Can"t use Standard OpenDialog since it really
opens .lnk file and returns the command string,
associated with link.
}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, ActiveX, ShlObj, ComCtrls, Menus;
const
IID_IPersistFile: TGUID = (
D1:$0000010B; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));

type
TForm1 = class(TForm)
Edit0: TEdit;
Button1: TButton;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label7: TLabel;
HotKey1: THotKey;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure ShowLinkInfo;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowLinkInfo;
end;
procedure TForm1.ShowLinkInfo;
Var
Desc : Array[0..MAX_PATH] of Char;
SL : IShellLink;
PF : IPersistFile;
HRES : HRESULT;
FD : TWin32FindData;
begin
CoInitialize(Nil);
HRes := COCreateInstance(CLSID_ShellLink, Nil, CLSCTX_INPROC_SERVER,
IID_IShellLinkA, SL);
If Succeeded(HRes) Then
Begin
HRes := SL.QueryInterface(IID_IPersistFile, PF);
If Succeeded(HRes) Then
Begin
Edit0.Text := "D:\LINKDEMO.LNK";
PF.Load("D:\LINKDEMO.LNK", STGM_READ);
SL.Resolve(Handle, SLR_ANY_MATCH);
SL.GetPath(Desc, MAX_PATH, FD, SLGP_UNCPRIORITY);
Edit1.Text := StrPas(Desc);
SL.GetDescription(Desc, MAX_PATH);
Edit2.Text := StrPas(Desc);
SL.GetWorkingDirectory(Desc, MAX_PATH);
Edit3.Text := StrPas(Desc);
SL.GetArguments(Desc, MAX_PATH);
Edit4.Text := StrPas(Desc);
End;
End;
end;
end.


 
Dimka Maslov ©   (2002-04-03 10:05) [2]

Закачай файл http://dims.gpsm.ru/files/downloads/dimpas.zip, там находится класс TShellLink, который и читает и записывает в ярлык. Кроме того, там есть функция OpenShortcut, которая просто вернёт имя файла, на который ссылается ярлык.


 
_Alex_ ©   (2002-04-03 11:56) [3]

Спасибо всем за ответы!


 
_Alex_ ©   (2002-04-03 11:56) [4]

Спасибо за ответы!



Страницы: 1 вся ветка

Текущий архив: 2002.06.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
1-17891
Yuraz
2002-05-23 18:13
2002.06.06
Знатоки, кто знает как вписать ср-ми Delphi в RTF файл таблицу?


1-18040
Tosha_a
2002-05-24 19:09
2002.06.06
Работа со StringGrid


1-17957
erik
2002-05-20 20:32
2002.06.06
FreeVCS


1-18055
android
2002-05-25 13:28
2002.06.06
Непрямоугольная панель


1-17918
Юрий Федоров
2002-05-27 17:39
2002.06.06
Многоязыковая поддержка