procedure WMPOpenExt(Name: string; Ext: string; Desc: string); var WMPExt: string; begin WMPOpenPresent(Ext); if WMPCount < (WMPOpenMaxChar - 3) then //minus 3 because you at least need room for a '*.' and mystical char WMP adds begin if (WMPCount + Length(Ext)) >= WMPOpenMaxChar then Exit; if RegQueryStringValue(HKLM, PlayerExts + 'Types', Uppercase(Name), WMPExt) and (WMPExt <> '') then begin Ext := WMPExt + ';' + Ext; WMPCount := WMPCount - Length(WMPExt) - 1; end; WMPCount := WMPCount + Length(Ext) + 1; RegWriteStringValue(HKLM, PlayerExts + 'Types', Uppercase(Name), Ext); RegWriteStringValue(HKLM, PlayerExts + 'Descriptions', Uppercase(Name), Desc + ' (' + Ext + ')'); RegWriteStringValue(HKLM, PlayerExts + 'MUIDescriptions', Uppercase(Name), Desc); end; end;