Как вызвать OleCreatePropertyFrameIndirect из c # - PullRequest
0 голосов
/ 10 февраля 2012

Я пишу приложение на 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 # - есть идеи?

1 Ответ

0 голосов
/ 10 февраля 2012

Вряд ли проблема с OleCreatePropertyFrameIndirect. Гораздо более вероятно, что сама страница свойств (и / или фильтр источника) имеет проблему и закрывается, выдает исключение, генерирует нарушение прав доступа и т. Д.

...