Код: Выделить всё
dynamic access = Activator.CreateInstance(Type.GetTypeFromProgID("Access.Application", true));
// Starts an Access XP (2002) process in my case, but could be any version.
foreach (dynamic commandBar in access.CommandBars) {
if (!commandBar.BuiltIn) { // Only my menus and toolbars.
foreach (dynamic control in commandBar.Controls) {
if (control.Type == (int)MsoControlType.msoControlButton && !control.BuiltInFace) {
string caption = control.Caption; // Works.
stdole.IPictureDisp picture = control.Picture; //
Вызов Getter of the CommandBarbutton.picture < /code> свойства отбрасывает это исключение: < /p>
катастрофическая неудача (исключение из hresult: 0x8000fffff (e_unexpret)) < /pslios>
system.dynamic.comruntimehelpers.checkthrowexcept System.dynamic.updatedElegates.updateAndexecute1 [t0, Tret] (сайт Callsite, T0 Arg0)
at system.dynamic.updatedelegates.updateandexecute1 64 < /p>
< /blockquote>
Как я могу получить изображение, избегая этого исключения? У меня уже есть решение для этого. Кроме того, это не имеет значения, печатается ли Picture Это .net Framework 4.0 Windows Project, составленный для x86 (32-битный). Сборки (PIA) допускает сильную набор, но не решает проблему. Исключение сохраняется < /strong>. < /p>
Между тем я читал больше о PIAS. Поскольку .NET Framework 4.0 вы можете настроить свойства ссылки на сборку, чтобы сделать их версией независимыми. Щелкните правой кнопкой мыши SERICTIENCS/MICROSOFT.OFFICE.Interop.access и
[*] Установить типы embed interop true .
Установите конкретную версию forse . Ссылки / Офис < / em> также. Поэтому я буду переходить на PIAS вместо использования Dynamic .
Подробнее здесь: https://stackoverflow.com/questions/599 ... -bound-way
Мобильная версия