Difference between revisions of "FileAssociation"
From Free Pascal wiki
Jump to navigationJump to search (→Usage) |
(→Usage) |
||
Line 49: | Line 49: | ||
assoc.ExtensionIcon := '"C:\lazarus\images\lprfile.ico"'; | assoc.ExtensionIcon := '"C:\lazarus\images\lprfile.ico"'; | ||
− | assoc.Action := '"C:\lazarus\lazarus.exe" "%1"'; | + | // full path required, you can use ParamStr(0) to get the path with the .exe name included. The path must be inside quotes if it has whitespace. |
+ | assoc.Action := '"C:\lazarus\lazarus.exe" "%1"'; | ||
assoc.ActionName := 'Open'; | assoc.ActionName := 'Open'; | ||
assoc.ActionIcon := '"C:\lazarus\images\mainicon.ico"'; | assoc.ActionIcon := '"C:\lazarus\images\mainicon.ico"'; |
Revision as of 00:37, 16 December 2019
This article applies to Windows only.
See also: Multiplatform Programming Guide
│
English (en) │
français (fr) │
This article applies to Windows only.
See also: Multiplatform Programming Guide
TFileAssociation
Author: Lainz
Licence: Modified LGPL
Version: 1.0
Description: This unit registers file association for Windows.
Download
GitHub: https://github.com/lainz/FileAssociation
Usage
First install the package. You can drop the component TFileAssociation (FileAssoc unit) that gets installed in the System tab of the IDE.
...
uses
...
FileAssoc;//<-- add fileassociation unit here
type
...
{ private declarations }
assoc: TFileAssociation;
...
procedure TfrmMain.FormCreate(Sender: TObject);
begin
assoc := TFileAssociation.Create(Self);//<-- create like a regular component
end;
procedure TfrmMain.Button1Click(Sender: TObject);
begin
assoc.ApplicationName := 'Lazarus IDE';
assoc.ApplicationDescription := 'RAD for Free Pascal';
// you can change Extension and Action part for each extension you have
assoc.Extension := '.lpr';
assoc.ExtensionName := 'Lazarus Project';
assoc.ExtensionIcon := '"C:\lazarus\images\lprfile.ico"';
// full path required, you can use ParamStr(0) to get the path with the .exe name included. The path must be inside quotes if it has whitespace.
assoc.Action := '"C:\lazarus\lazarus.exe" "%1"';
assoc.ActionName := 'Open';
assoc.ActionIcon := '"C:\lazarus\images\mainicon.ico"';
// notice that using RegisterForAllUsers as True requires Administrator Privileges
// if you want to run without privileges set it to false, but it will register for current user only
assoc.RegisterForAllUsers:=False;
if assoc.Execute then
begin
ShowMessage('OK');
assoc.ClearIconCache; //<<-- rebuild icons
end;
end;
end.
How to open the associated file
procedure TForm1.FormCreate(Sender: TObject);
var
s: String;
begin
// if there are parameters
if ParamCount > 0 then
begin
// load the first parameter
s := ParamStr(1);
// if is a .txt file
if ExtractFileExt(s) = '.txt' then
begin
// load the .txt file into a memo
Memo1.Lines.LoadFromFile(s);
end;
end;
end;