|
|
|

| | | | | | | | |  |
 | 
 | Code source : unité LRJ_WinShellLink |  |

|  |
 | |  |

|
Description : cette unité contient l'objet LRJ_TShellLink qui permet de créer,
modifier et extraire les informations d'un raccourci Windows (fichiers .LNK).
L'unité est livrée avec une application de démonstration (
voir description plus loin
) qui utilise les fonctionnalités de
l'objet contenu dans l'unité. Les codes de l'application
sont livrés avec l'unité pour illustrer comment utiliser l'objet LRJ_TShellLink contenu dans
cette unité. L'application de démonstration utilise les unités
LRJ_GridsPlus et
LRJ_WinBrowseDialog non livrées avec
l'application.
L'unité LRJ_WinShellLink met en oeuvre les fonctions et interfaces de Windows suivantes :
|
|
CoCreateInstance
CoInitializeEx
CoUninitialize
FileTimeToLocalFileTime
FileTimeToSystemTime
GetDiskFreeSpaceW
GetFileAttributesExW
IPersistFile
IShellLink
IShellLinkDataList
LocalFree
SetErrorMode
|
Déclarations publiques de l'unité
I
Télécharger l'application de démonstration
I
Exemples d'utilisations
Utilise les unités : Windows, Classes, SysUtils, ActiveX, ShlObj, Menus et
LRJ_WindowsPlus.
Version : 1.1 du 10.05.2009
Auteur : Laurent Hède
Copyright : LorenJo
Nombre de lignes : 974
Réalisée sous : Delphi 6
Systèmes compatibles : NT4, 2000, XP, Vista, serveurs
Prix : 208.00 € H.T.
Déclarations publiques de l'unité :
unit LRJ_WinShellLink;
interface
uses
Windows,
Classes,
SysUtils,
ActiveX,
ShlObj,
menus,
LRJ_WindowsPlus
;
..................
type
// remarque: les chaines ne doivent pas dépasser MAX_PATH(255) avant win2000, sinon peuvent
// atteindre INFOTIPSIZE (1024) à partir de win2000
// jj := LrJ_TShellLink.create;
// jj.TargetFullName := Application.ExeName;
// jj.ShowCmd := SW_SHOWDEFAULT;
// jj.SaveToFile( ' APathDirectory ' , 'nom de l'icone (sans.lnk)');
// jj.free;
// Ce code permet de créer une nouvelle icône qui est un raccourci sur l'application en cours
//-----------OBJECT--------------------------
LRJ_TShellLink = class(TObject)
..................
// AFlag = combinaison de SLR_INVOKE_MSI, SLR_NOLINKINFO, SLR_NO_UI, SLR_NOUPDATE, SLR_NOSEARCH, SLR_NOTRACK, SLR_UPDATE
function Resolve(const AHWND: HWND; const AFlag: DWORD): boolean;
// APathDirectory sans le '/' terminal; ALinkName sans extension, prendra l'extension .LNK. IfClearCurrentFileName
// pour définir si le nouveau fileName devient le FileName de LrJ_TShellLink ou pas
function SaveToFile(const APathDirectory: string; const ALinkName: string;
const IfClearCurrentFileName: boolean = true): boolean; overload;
function SaveToFile(const AFullLinkName: string; const IfClearCurrentFileName: boolean = true): boolean; overload;
function SaveToFile: boolean; overload; // Save avec le nom utilisé par load, IfClearCurrentFileName = true
function LoadFromFile(const AFullLinkName: string; const AFlag : integer = STGM_READWRITE): boolean;
// propriétés de la cible
property TargetFullName: string read GetTargetFullName write SetTargetFullName; // '' en cas d'erreur
property TargetSize: Int64 read GetTargetSize; // -1 en cas d'erreur
property TargetDiskSize: Int64 read GetTargetDiskSize; //-1 en cas d'erreur
property TargetLastAccessTime: TDateTime read GetTargetLastAccessTime; //0 en cas d'erreur
property TargetLastWriteTime: TDateTime read GetTargetLastWriteTime; //0 en cas d'erreur
property TargetCreationTime: TDateTime read GetTargetCreationTime; //0 en cas d'erreur
property TargetFileAttribs: DWORD read GetTargetFileAttribs;
// propriétés du lien
property LinkSize: Int64 read GetLinkSize; // -1 en cas d'erreur
property LinkDiskSize: Int64 read GetLinkDiskSize; //-1 en cas d'erreur
property LinkLastAccessTime: TDateTime read GetLinkLastAccessTime; //0 en cas d'erreur
property LinkLastWriteTime: TDateTime read GetLinkLastWriteTime; //0 en cas d'erreur
property LinkCreationTime: TDateTime read GetLinkCreationTime; //0 en cas d'erreur
property IDList: PItemIDList read GetPItemIDList write SetPItemIDList; //nil en cas d'erreur
// voir nShowCmd de la fonction ShellExecute de Windows
property ShowCmd: Integer read GetShowCmd write SetShowCmd; //-1 en cas d'erreur
property WorkingDirectory: string read GetWorkingDirectory write SetWorkingDirectory; // '' en cas d'erreur (mais '' est une réponse possible)
property RelativePath: string write SetRelativePath;
property CommandLineArgument: string read GetCommandLineArgument write SetCommandLineArgument; //'' en cas d'erreur (mais '' est une réponse possible)
property Description: string read GetDescription write SetDescription; // '' en cas d'erreur (mais '' est une réponse possible)
property HotKey: LrJ_TShellLinkHotKey read GetHotKey write SetHotKey;
property IconLocation: LrJ_TShellLinkIconLocation read GetIconLocation write SetIconLocation;
// IShellLinkDataList fonctionnalités
property DataBlockFlags: DWORD read GetDataBlockFlags write SetDataBlockFlags;
// lorsqu'on attribut un texte ou un pointeur à la propriété, on ajoute le bloc au lien. Lorqu'on attribut un texte vide ('')
// ou un pointeur vide (nil) à la propriété, on soustrait le bloc au lien.
property DarwinID: string read GetDarwinID write SetDarwinID;
property ExpandedTargetPath: string read GetExpandedTargetPath write SetExpandedTargetPath;
property ExpandedIconPath: string read GetExpandedIconPath write SetExpandedIconPath;
property SpecialFolderData: LRJ_PShellDataBlocSpecFolder read GetSpecialFolderData write SetSpecialFolderData;
property ConsoleCodePage: PUINT read GetConsoleCodePage write SetConsoleCodePage;
property ConsoleProperties: LRJ_PNT_CONSOLE_PROPS read GetConsoleProperties write SetConsoleProperties;
end; //-----------FIN--------------------------
|
Application de démonstration

L'onglet "Infos" affiche les informations contenues dans le raccourci et liées au raccourci.
L'onglet "DataBloc texte" permet de modifier des informations liées à l'interface
IShellLinkDataList contenues dans le raccourci.
Exemples d'utilisations
Créer un raccourci sur le bureau vers l'application
var
zShellLink: LrJ_TShellLink;
begin
zShellLink := LrJ_TShellLink.create;
zShellLink.TargetFullName := Application.ExeName;
zShellLink.ShowCmd := SW_SHOWDEFAULT;
zShellLink.SaveToFile( 'chemin du bureau', 'nom du raccourci (sans.lnk)');
zShellLink.free;
end;
|
Vous n'avez pas trouvé d'exemple répondant à votre problématique ?
Cliquez sur ce lien.
|
|
 |
 | |  |
|
|