dam ci źródełko programu który wykorzystuje ShellLink:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FileCtrl, ShlObj, ActiveX, ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
Button2: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
List: TStringList;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
if Assigned(List) then
List.Free;
List:= TStringList.Create;
If OpenDialog1.Execute then
List.LoadFromFile(OpenDialog1.FileName);
For I:=List.Count-1 downto 0 do
begin
if Pos('#EXT',List.Strings[I])<>0 then
List.Delete(I);
end;
Label1.Caption:='Utworuff: '+IntToStr(List.Count);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
dir: string;
MyObject:IUnknown;
MySLink:IShellLink;
MyPFile:IPersistFile;
I: Integer;
begin
if SelectDirectory('Chose GTA 3/Cice City mp3 folder','',dir) then
begin
For i:=0 to List.Count-1 do
begin
MyObject:=CreateComObject(CLSID_ShellLink);
MySLink:=MyObject as IShellLink;
MyPFile:=MyObject as IPersistFile;
MySLink.SetPath(PChar(List.Strings[I]));
MyPFile.Save(PWideChar(WideString(Dir+'\#'+FormatFloat('0000',I+1)+' '+ExtractFileName(List.Strings[I])+'.lnk')), False);
end;
Application.MessageBox('Done','Done', MB_OK);
end;
end;
end.
Działa na 100% wystarczy pokominować z pidsami, a baz kombinowania z rejestrem wyciągniesz wszystkie potrzebne foldery (było to w faq!)