SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST+SHCNF_FLUSH,nil,nil);

解决方案 »

  1.   

    当然不行。我以前也问过同样的问题。上面的老兄也是这样答的,这样写完全正确,只可惜在编译时不能通过。原因是在Used段少声明了一个文件(害得我找了好长时间)。是什么我也忘了,等我查到再告诉你。
      

  2.   

    找到了,在Uses段中添加 ShlObj ,然后再在程序中使用上面的语句。祝你好运!
      

  3.   

    不行的,我已经use ShlObj了。
      

  4.   

    我当初就是看了Kingron的回答的。
      

  5.   

    你看看下面的代码:
    uses shlobj;
    var
      reg:tregistry;
    begin
      reg:=TRegistry.Create;
      reg.RootKey:=hkey_classes_root;
      if reg.OpenKey('.test',true) then
          reg.WriteString('','TestFileType');
      reg.CloseKey;
      if reg.OpenKey('TestFileType\DefaultIcon',true) then
        reg.WriteString('','c:\winnt\notepad.exe,0');
      SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST+SHCNF_FLUSH,nil,nil);
      reg.Free;
    end;