02.09.2022, 20:42
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Ну не знаю что у тебя там не работает.
Вот для D10.2 у меня все ок - регистрирует, при клике - открывает:
Код:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
btRegister: TButton;
lbFileName: TLabel;
edFileText: TMemo;
procedure btRegisterClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
System.Win.Registry, ShlObj;
procedure TForm1.btRegisterClick(Sender: TObject);
const
sKeyRoot = '\Software\Classes\';
sExt = '.protxt';
sAppName = 'ProText';
var
R : TRegistry;
begin
R := TRegistry.Create;
Try
R.RootKey := HKEY_CURRENT_USER;
If R.OpenKey(sKeyRoot+sExt,True) Then
Begin
R.WriteString('',sAppName);
R.CloseKey;
End;
If R.OpenKey(sKeyRoot + sAppName,True) Then
Begin
R.WriteString('',sAppName + ' file type');
R.CloseKey
End;
If R.OpenKey(sKeyRoot + sAppName + '\DefaultIcon',True) Then
Begin
R.WriteString('','"' + ParamStr(0) + '",0');
R.CloseKey;
End;
If R.OpenKey(sKeyRoot + sAppName + '\shell\open\command',True) Then
Begin
R.WriteString('','"' + ParamStr(0) + '" "%1"');
R.CloseKey;
End;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
Finally
R.Free;
End;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
If ParamCount > 0 Then
Begin
lbFileName.Caption := ParamStr(1);
edFileText.Lines.LoadFromFile(ParamStr(1));
End;
end;
end.
|