Skróty programów
Adam Boduch
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:
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.
Przydatne, tylko nie wiem do czego ten typ TLnk...można się obyć bez niego z samą lokalizacją skrótu. Spróbuję.
Pozdro.