Что такое IViewObject и как он используется в C # - PullRequest
0 голосов
/ 17 сентября 2009

Я пытаюсь выполнить несколько задач по автоматизации Internet Explorer, и мне требуется использовать IViewObject. Что такое IViewObject? Где я могу найти это определение?

Я был в Google, и все, что я нашел, имеет другое определение интерфейса для IViewObject. Разные методы или разные параметры, входящие в одни и те же методы.

Как узнать, какое определение интерфейса использовать с Internet Explorer?

Это одно определение, которое я нашел на pinvoke.net

[GuidAttribute( "0000010d-0000-0000-C000-000000000046" )]
[InterfaceTypeAttribute( ComInterfaceType.InterfaceIsIUnknown )]
[ComImportAttribute()]
public interface IViewObject
{
    void Draw( [MarshalAs( UnmanagedType.U4 )] int dwDrawAspect, int lindex, IntPtr pvAspect, DVTARGETDEVICE ptd, IntPtr hdcTargetDev, IntPtr hdcDraw, COMRECT lprcBounds, COMRECT lprcWBounds, IntPtr pfnContinue, int dwContinue );
    int GetColorSet( [MarshalAs( UnmanagedType.U4 )] int dwDrawAspect, int lindex, IntPtr pvAspect, DVTARGETDEVICE ptd, IntPtr hicTargetDev, out tagLOGPALETTE ppColorSet );
    int Freeze( [MarshalAs( UnmanagedType.U4 )] int dwDrawAspect, int lindex, IntPtr pvAspect, out IntPtr pdwFreeze );
    int Unfreeze( [MarshalAs( UnmanagedType.U4 )] int dwFreeze );
    int SetAdvise( [MarshalAs( UnmanagedType.U4 )] int aspects, [MarshalAs( UnmanagedType.U4 )] int advf, [MarshalAs( UnmanagedType.Interface )] IAdviseSink pAdvSink );
    void GetAdvise( [MarshalAs( UnmanagedType.LPArray )] out int[] paspects, [MarshalAs( UnmanagedType.LPArray )] out int[] advf, [MarshalAs( UnmanagedType.LPArray )] out IAdviseSink[] pAdvSink );
}

Я бы просто попробовал это определение, но я получил несколько неизвестных типов: DVTARGETDEVICE, COMRECT, tagLOGPALETTE. Поэтому мой следующий вопрос: на какую сборку нужно ссылаться, чтобы использовать эти типы?

1 Ответ

3 голосов
/ 17 сентября 2009

DVTARGETDEVICE и COMRECT являются структурами. Вы можете найти их определения на pinvoke.net.

tagLOGPALETTE - это класс. Образец доступен на http://blogs.msdn.com/vsod/archive/2008/11/01/resizing-the-embedded-ole-objects-using-net.aspx.

Кроме того, IViewObject и три указанных типа используются внутри .NET Framework для внутреннего использования. Если вы возьмете себе копию Reflector (http://www.red -gate.com / products / refleor / ), вы сможете просмотреть существующие реализации в System.Windows.Forms.UnsafeNativeMethods.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...