Creating an Associator - The entire code
(Page 4 of 4 )
unit appassoc;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons,registry;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
StaticText1: TStaticText;
StaticText2: TStaticText;
edappname: TEdit;
edExt: TEdit;
StaticText3: TStaticText;
btnAssoc: TBitBtn;
btnClose: TBitBtn;
StaticText4: TStaticText;
btnbrowse: TSpeedButton;
StaticText5: TStaticText;
op: TOpenDialog;
StaticText7: TStaticText;
procedure btnCloseClick(Sender: TObject);
procedure btnbrowseClick(Sender: TObject);
procedure btnAssocClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnCloseClick(Sender: TObject);
begin
close;
end;
procedure TForm1.btnbrowseClick(Sender: TObject);
begin
if op.Execute then begin
edappname.Text:=op.FileName;
end
end;
procedure TForm1.btnAssocClick(Sender: TObject);
var
reg:tregistry;
error:boolean;
begin
if (edappname.text = '') OR (edext.text = '') then begin
MessageDlg('Please ensure that you''ve filled in ALL the fields.', mtError, [mbOk], 0);
exit;
end;
reg := TRegistry.Create;
reg.RootKey := HKEY_CLASSES_ROOT;
reg.LazyWrite := false;
try
if
{Add Program Support}
reg.OpenKey('.'+edExt.Text+'shellopencommand', true) then begin
{Invoke the program passing the file name as the first parameter}
reg.WriteString('', edappname.Text+' %1 ');
{Add Icon Display}
reg.CloseKey;
error:=false;
end
else begin
error:=true;
end;
if not error then begin
reg.OpenKey('.'+edExt.Text+'DefaultIcon', true);
{Use the first icon in the executable to display}
reg.WriteString('', edappname.Text+',0');
reg.CloseKey;
end;
if error then begin
MessageDlg('There''s been an error creating this association, please check that you''ve entered the information correctly.', mtInformation ,
[mbOk], 0);
exit;
end
else begin
if MessageDlg(extractfilename(edappname.Text)+ ' have now been associated ' +#13#10+ 'with ' +'extention - '+ '.'+edExt.Text+'!'#13#10+'Would you like to make another Association?', mtInformation , [mbYes, mbNo], 0) = mrYes then
begin
edext.Clear;
edappname.Clear;
end
else begin
close;
end;
end;
//************
finally
reg.Free;
end;
close;
end;
end.
Conclusion
That's it! You can now associate as many extensions with your application as you like. Because this application involves changing the system registry, I would strongly advice you to back up your registry, in the unlikely case that something goes wrong.
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |