Я пишу приложение на c #, которое должно отображать страницу свойств.У меня есть код:
ISpecifyPropertyPages pProp = sourceObject as ISpecifyPropertyPages;
int hr = 0;
//Get the name of the filter from the FilterInfo struct
FilterInfo filterInfo;
hr = ((IBaseFilter) sourceObject).QueryFilterInfo(out filterInfo);
//DsError.ThrowExceptionForHR(hr);
if (hr == 0)
{
// Get the propertypages from the property bag
CAUUID caGUID;
hr = pProp.GetPages(out caGUID);
if (hr == 0)
{
// Create and display the OlePropertyFrame
hr = Win32.OleCreatePropertyFrame(parentWindowForPropertyPage, 0, 0,
filterInfo.achName, 1,ref sourceObject,
caGUID.cElems,
caGUID.pElems, 0, 0, IntPtr.Zero);
}
// Release COM objects
Marshal.ReleaseComObject(pProp);
Marshal.FreeCoTaskMem(caGUID.pElems);
}
..., который работает нормально, если источник не работает - если источник работает, окно свойств мигает и сразу же закрывается.Я предполагаю, что мне нужно вместо этого использовать OleCreatePropertyFrameIndirect и вызывать его с существующим объектом, но я не могу найти никаких примеров того, как сделать это через c # - есть идеи?