Strona g│≤wna

 

Umieszczanie skr≤t≤w

UmiejΩtno╢µ umieszczania skr≤t≤w b▒d╝ to na pulpicie, czy w menu start jest rzadko u┐ywana, ale czasem siΩ przydaje wiΩc rozwi▒zanie tego problemu tutaj prezentuje. 

Przede wszystkim do listy uses nale┐y dodaµ takie modu│y:

uses Registry, ActiveX, SHlObj, ComObj;

Teraz musisz zadeklarowaµ nowe typy: 

type
  TInk = (onDesktop, onMenuStart, onSendTo, onPrograms, onStartUp);
  ELackOfFile = class(Exception); // if file doesn't exist

Pierwszy typ "m≤wi" gdzie skr≤t ma byµ umieszczony, czy: na pulpicie, w menu start, w "wy╢lij do", w menu Programy menu start, w autostarcie. 

Oto procedura umieszczaj▒ca skr≤t w wybranym miejscu. Pierwszym parametrem jest nazwa pliku, a drugi to miejsce gdzie skr≤t ma byµ umieszczony:

Listing 14.1


procedure SetShortening(FName: PChar; Where: TInk);
var
  IObject   : IUnknown;
  ISLink    : IShellLink;
  IPFile    : IPersistFile;
  FileName  : String;
  Directory : String;
  WFileName : WideString;
  Reg       : TRegistry;
begin
  IObject := CreateComObject(CLSID_ShellLink); // stworz objekt COM
  ISLink := IObject as IShellLink;
  IPFile := IObject as IPersistFile;
  FileName:= FName;

  if not FileExists(FName) then
    raise ELackOfFile.Create(
    'File "' + FName + '" does not found. Check It');

   with ISLink do
   begin
     SetPath(PChar(FileName));
     SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
   end;

   Reg := TRegistry.Create;
   Reg.OpenKey(
   'Software\MicroSoft\Windows\CurrentVersion\Explorer\Shell Folders', False);
 {
   W zaleznosci od wybranej opcji do zmiennej Directory przypisywana
   jest odpowiednia sciezka folderu
 }
    case Where of
      onDesktop : Directory := Reg.ReadString('Desktop');
      onSendTo : Directory := Reg.ReadString('SendTo');
      onMenuStart : Directory := Reg.ReadString('Start Menu');
      onPrograms : Directory := Reg.ReadString('Programs');
      onStartUp : Directory := Reg.ReadString('Startup');
    end;

  CreateDir(Directory);

  WFileName := Directory + '\' + ExtractFileName(ChangeFileExt(FileName, '.lnk'));
  IPFile.Save(PWChar(WFileName), False); // zapisz lacznik
  Reg.Free;
end;

To mo┐e byµ trochΩ skomplikowane - fakt. 

Teraz, aby wykorzystaµ powy┐sz▒ procedurΩ musisz napisaµ:

  SetShortening('C:\polecamy.gif', onPrograms);

W tym wypadku skr≤t zostanie umieszczony w menu Programy Menu Start.

Adam Boduch