Windows本来就是靠扩展名来判断的。不判断扩展名靠什么?

解决方案 »

  1.   

    我用过SHGetFileInfo,完全可以的(SHGFI_TYPENAME)。请看MSDN的帮助。
      

  2.   

    先获得扩展名
    然后读注册表
    var
      MyExt,lx,Key:String;
      Reg  :TRegistry;
    begin
      MyExt := GetFileExt(FileName);
      Reg := TRegistry.Create; 
      Reg.RootKey := HKEY_CLASSES_ROOT;
      try
        if reg.OpenKey(MyExt,False) then
        begin
          Key := Reg.ReadString('');
          reg.closekey;
          if reg.openkey(key,False) then
            lx  := Reg.readstring('')
          else
           ShowMessage('未知文件类型!'); 
        end else
           ShowMessage('未知文件类型!');
      finally
        Reg.free;
      end;
      ShowMessage('文件类型为'+lx);
    end;