public IDictionary <Wtypes.PROPERTYKEY, object> GetFromPropertyStore(IEnumerable <Wtypes.PROPERTYKEY> keys) { if (keys == null) { throw new NotSupportedException(AutoHelpers.FormatInvariant("Keys passed cannot be null")); } Shell32.IPersistFile persist = (Shell32.IPersistFile) new Shell32.ShellLink(); persist.Load(this.ShortcutPath, (uint)ObjBase.STGM.STGM_READ); Shell32.IPropertyStore store = (Shell32.IPropertyStore)persist; Dictionary <Wtypes.PROPERTYKEY, object> results = new Dictionary <Wtypes.PROPERTYKEY, object>(); foreach (Wtypes.PROPERTYKEY key in keys) { Wtypes.PROPERTYKEY pkey = key; // iteration variables are read-only and we need to pass by ref object pv; store.GetValue(ref pkey, out pv); results.Add(key, pv); } return(results); }
public void SetToPropertyStore(IDictionary <Wtypes.PROPERTYKEY, object> properties) { if (properties == null) { throw new NotSupportedException(AutoHelpers.FormatInvariant("Properties passed cannot be null.")); } Shell32.IPersistFile persist = (Shell32.IPersistFile) new Shell32.ShellLink(); persist.Load(this.ShortcutPath, (uint)ObjBase.STGM.STGM_READWRITE); Shell32.IPropertyStore store = (Shell32.IPropertyStore)persist; foreach (Wtypes.PROPERTYKEY key in properties.Keys) { Wtypes.PROPERTYKEY pkey = key; // iteration variables are read-only and we need to pass by ref object pv = properties[key]; store.SetValue(ref pkey, ref pv); } persist.Save(null, true); }