unit MauryShortCut;
interface
uses
SysUtils, Classes, Registry, shlobj, ActiveX, ComObj, Windows;
type
TMauryShortCut = class(TComponent)
private
ffilename: TFileName;
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
property FileCollegato : TFileName read ffilename write FFilename;
function GetDesktopDirectory : String;
function GetStartMenuDirectory : String;
function GetStartupDirectory : String;
function GetProgramsDirectory : String;
procedure CreaCollegamentoA(Directory,NomeFile : string);
procedure CreaCollegamentoB(NomeFile : string);
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('MauryTecnologies', [TMauryShortCut]);
end;
{ TMauryShortCut }
procedure TMauryShortCut.CreaCollegamentoA(Directory, NomeFile: string);
var
AnObj : IUnknown;
Shlink : IShellLink;
PFile : IPersistFile;
WFilename : WideString;
begin
AnObj := CreateComObject(CLSID_ShellLink);
Shlink := AnObj as IShellLink;
PFile := AnObj as IPersistFile;
Shlink.SetPath(PChar(FileCollegato));
Shlink.SetWorkingDirectory(PChar(Directory));
WFilename := ChangeFileExt(IncludeTrailingPathDelimiter(Directory)+NomeFile,'.lnk');
PFile.Save(PWChar(WFilename), False);
end;
procedure TMauryShortCut.CreaCollegamentoB(NomeFile: string);
var
AnObj : IUnknown;
Shlink : IShellLink;
PFile : IPersistFile;
WFilename : WideString;
begin
AnObj := CreateComObject(CLSID_ShellLink);
Shlink := AnObj as IShellLink;
PFile := AnObj as IPersistFile;
Shlink.SetPath(PChar(FileCollegato));
Shlink.SetWorkingDirectory(PChar(ExtractFilePath(NomeFile)));
WFilename := ChangeFileExt(NomeFile,'.lnk');
PFile.Save(PWChar(WFilename), False);
end;
function TMauryShortCut.GetDesktopDirectory: String;
var reg : TRegIniFile;
begin
reg := TRegIniFile.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
Result := reg.ReadString('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders','Common Desktop','Non esiste');
if Result = 'Non esiste' then
Result := reg.ReadString('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders','Desktop','');
reg.Free;
end;
function TMauryShortCut.GetProgramsDirectory: String;
var reg : TRegIniFile;
begin
reg := TRegIniFile.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
Result := reg.ReadString('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders','Common Programs','Non esiste');
if Result = 'Non esiste' then
Result := reg.ReadString('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders','Programs','');
reg.Free;
end;
function TMauryShortCut.GetStartMenuDirectory: String;
var reg : TRegIniFile;
begin
reg := TRegIniFile.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
Result := reg.ReadString('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders','Common Start Menu','Non esiste');
if Result = 'Non esiste' then
Result := reg.ReadString('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders','Start Menu','');
reg.Free;
end;
function TMauryShortCut.GetStartupDirectory: String;
var reg : TRegIniFile;
begin
reg := TRegIniFile.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
Result := reg.ReadString('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders','Common Startup','Non esiste');
if Result = 'Non esiste' then
Result := reg.ReadString('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders','Startup','');
reg.Free;
end;
end.