zoukankan      html  css  js  c++  java
  • 使用 TRegistry 类[4]: 文件打开与文件图标的关联

    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    uses Registry, ShlObj;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Memo1.Align := alTop;
      Memo1.ScrollBars := ssBoth;
      Button1.Caption := '设置文件关联、图标关联';
      Button2.Caption := '取消设置';
    
      if (ParamStr(1) <> '') and FileExists(ParamStr(1)) then
        Memo1.Lines.LoadFromFile(ParamStr(1));
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      reg: TRegistry;
    begin
      reg := TRegistry.Create;
      reg.RootKey := HKEY_CLASSES_ROOT;
    
      {在注册表中添加我们虚拟的 .tst 格式, 并指定默认项的值是 TestFile}
      reg.OpenKey('.tst', True);
      reg.WriteString('', 'TestFile');
      reg.CloseKey;
    
      {文件打开关联}
      reg.OpenKey('TestFile\shell\open\command', True);
      reg.WriteString('', ParamStr(0) + ' %1');
      reg.CloseKey;
    
      {文件图标关联}
      reg.OpenKey('TestFile\DefaultIcon', True);
      reg.WriteString('', ParamStr(0) + ',0');
      reg.CloseKey;
    
      reg.Free;
    
      {刷新图标显示}
      SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
    end;
    
    {清除上面的设置}
    procedure TForm1.Button2Click(Sender: TObject);
    var
      reg: TRegistry;
    begin
      reg := TRegistry.Create;
      reg.RootKey := HKEY_CLASSES_ROOT;
      reg.DeleteKey('.tst');
      reg.DeleteKey('TestFile');
      reg.Free;
      SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
    end;
    
    end.
    
  • 相关阅读:
    Unity3D保护资源管理文件的AssetBundle包加密!
    untiy Kinect SDK 的默认BUG 修改方法
    Android 插件扩展系列之 封装与应用
    datagridview 单击单元格获取单元格的内容
    winform 显示动态图片 Gif
    Unity 漫游相机脚本
    Unity3D教程:c#脚本yield的用法
    Unity 脚本实现CoverFlow效果
    删除 treeview Node节点 循环删除子节点 存储过程
    Unity 怪物AI
  • 原文地址:https://www.cnblogs.com/del/p/1274892.html
Copyright © 2011-2022 走看看