internal static int GetPropertyValue(this IPropertySetStorage propertySetStorage, Guid fmtid, uint propid, out PROPVARIANT propvar) { HRESULT hr = (int)HRESULT.E_FAIL; propvar = default(PROPVARIANT); PROPSPEC[] propspec = new PROPSPEC[1]; PROPVARIANT[] propvars = { propvar }; IPropertyStorage propertyStorage = null; uint grfMode = (uint)(STGM.READ | STGM.SHARE_EXCLUSIVE); try { if (NativeMethods.Succeeded(hr = propertySetStorage.Open(ref fmtid, grfMode, out propertyStorage))) { hr = propertyStorage.GetProperty(propid, out propvar); } } catch { } finally { if (propertyStorage != null) { propertyStorage.FinalRelease(); } } return(hr); }
private string SetGlobalComboBoxState(IPropertyStorage storage, ComboBox box, string propertyName, string defaultValue) { string result = storage.GetProperty(false, "", propertyName, defaultValue) as string; int index = 0; if (result != null) { if (!Int32.TryParse(result, out index)) { index = 0; } } box.SelectedIndex = index; return(result); }
internal static PropertySet FromIPropertyStorage(IPropertyStorage propertyStorage) { if (propertyStorage == null) { throw new ArgumentNullException("propertyStorage"); } HRESULT hr = HRESULT.E_FAIL; PropertySet propertySet = null; STATPROPSETSTG stat; propertyStorage.Stat(out stat); IEnumSTATPROPSTG enumerator = null; List <Property> properties = new List <Property>(); try { if (NativeMethods.Succeeded(hr = propertyStorage.Enum(out enumerator))) { STATPROPSTG[] sps = new STATPROPSTG[] { default(STATPROPSTG) }; uint fetched = 0; while ((enumerator.Next(1, sps, out fetched) == HRESULT.S_OK) && (fetched == 1)) { string name; PROPVARIANT propvar = default(PROPVARIANT); try { propertyStorage.GetPropertyName(sps[0].propid, out name); sps[0].lpwstrName = name; propertyStorage.GetProperty(sps[0].propid, out propvar); properties.Add(new Property(sps[0], propvar.Value)); } catch { } finally { propvar.Clear(); } } } } catch { } finally { if (enumerator != null) { enumerator.FinalRelease(); } } Type type = System.Reflection.Assembly.GetExecutingAssembly().GetPropertySetType(stat.fmtid); if (type == null) { // In this case, we did not find a strongly typed property set. type = typeof(PropertySet); } propertySet = PropertySet.InvokeInternalConstructor(type, stat, properties.ToArray()); propertySet.Name = type.GetPropertySetName(); return(propertySet); }
private string SetGlobalComboBoxState(IPropertyStorage storage, ComboBox box, string propertyName, string defaultValue) { string result = storage.GetProperty(false, "", propertyName, defaultValue) as string; int index = 0; if (result != null) { if (!Int32.TryParse(result, out index)) { index = 0; } } box.SelectedIndex = index; return result; }