I wrote a function for this purpose:
it returns the application with the full path to where its located, empty if not found
Function GetAssociation(
Const Fileext:
String):
String;
Var
FileClass, Tmp:
String;
Reg: TRegistry;
Begin
Result := '';
Reg := TRegistry.Create(KEY_EXECUTE); //read only please
Reg.RootKey := HKEY_CLASSES_ROOT;
FileClass := '';
If Reg.OpenKeyReadOnly(Fileext)
Then
Begin
FileClass := Reg.ReadString(''); //read the default
Reg.CloseKey;
End;
If FileClass <> ''
Then Begin
If Reg.OpenKeyReadOnly(FileClass + '\Shell\Open\Command')
Then
Begin
Result := Reg.ReadString('');
Reg.CloseKey;
End;
End;
Reg.Free;
If (Length(Result)>0)
Then
If (Result[1]='"')
Then
Begin
Delete(Result, 1, 1);
Result:=Copy(Result, 1, Pos('"', Result)-1)
End
Else
Begin
Tmp:=ExtractFileExt(Result);
If (Pos(' ', Tmp)>0)
Then
Tmp:=Copy(Tmp, 1, Pos(' ', Tmp)-1);
Result:=Copy(Result, 1, Pos(Tmp, Result)+Length(Tmp))
End
End;
...ok... then as an example: drop a TEdit and a TButton on your form, put the extension that you need on the TEdit, like:
TEdit.Text:='.ZIP'
(don't forget to include the "." before the extension)
then on the onclick event of the button:
Procedure TForm1.Button2Click(Sender: TObject);
Begin
ShowMessage(GetAssociation(Edit1.Text))
End;
that's it
keep up coding
- The source code of the article was formatted using this unit:
PAS 2 HTML converter
EberSys