Public feed
#726224
procedure WMPOpenExt(Name: string; Ext: string; Desc: string);
var
I: Integer;
P: Integer;
WMPExt: string;
WMPDesc: string;
begin
if WMPCount < (WMPOpenMaxChar - 3) then //minus 3 because you at least need room for a '*.' and mystical char WMP adds
begin
WMPOpenPresent(Ext);
if RegQueryStringValue(HKLM, PlayerExts + 'Types', Uppercase(Name), WMPExt) then
begin
if (WMPCount + Length(Ext)) > WMPOpenMaxChar then Exit; //if only adding to current entry it can be equal to WMPOpenMaxChar
if WMPExt <> '' then
Ext := WMPExt + ';' + Ext;
WMPCount := WMPCount - Length(WMPExt) - 1;
end
else
if (WMPCount + Length(Ext)) >= WMPOpenMaxChar then Exit;
WMPCount := WMPCount + P;
RegWriteStringValue(HKLM, PlayerExts + 'Types', Uppercase(Name), Ext);
RegWriteStringValue(HKLM, PlayerExts + 'MUIDescriptions', Uppercase(Name), Desc);
if RegQueryStringValue(HKLM, PlayerExts + 'Descriptions', Uppercase(Name), WMPDesc) then
begin
if WMPDesc[Length(WMPDesc)] = ')' then
Delete(WMPDesc, Length(WMPDesc), 1);
RegWriteStringValue(HKLM, PlayerExts + 'Descriptions', Uppercase(Name), WMPDesc + ';' + Ext + ')');
end
else
RegWriteStringValue(HKLM, PlayerExts + 'Descriptions', Uppercase(Name), Desc + ' (' + Ext + ')');
end;
end;