---
От: UCoder  
Дата: 20.08.13 12:54
Оценка:
---
Отредактировано 20.12.2016 16:54 UCoder . Предыдущая версия .
Re: Как использовать 32-битную надстройку в Excel 64-бит?
От: BlackEric http://black-eric.lj.ru
Дата: 20.08.13 13:27
Оценка:
Здравствуйте, UCoder, Вы писали:

UC>Думаю, что для вызова функций рабочего листа (см. п.2 выше) такая схема будет работать без проблем. Однако, есть сомнения насчет работоспособности реализации п.1. В частности, в DllMain 32-битной DLL на событие DLL_PROCESS_ATTACH свойству Application->Handle присваивается Handle главного окна Excel. Благодаря этому все диалоговые окна из DLL работают как часть Excel (например, минимизируются при сворачивании Excel). Но в нашем случае главное окно Excel имеет 64-битный Handle (?), а Application->Handle в DLL — 32-битный. Могут ли из=за этого возникнуть проблемы?

Могут.

UC>Ето-либо сталкивался с подобной задачей?


UC>Исходники 32-битной DLL имеются, но скомпилировать их под 64-битную платформу пока не представляется возможным.


У вас есть два нормальных варианта
1. Перейти на 64 бита везде
2. Начать использовать Excel через COM
https://github.com/BlackEric001
Re: Как использовать 32-битную надстройку в Excel 64-бит?
От: baranovda Российская Империя  
Дата: 20.08.13 13:36
Оценка:
Здравствуйте, UCoder, Вы писали:

Захости её в COM+
---
От: UCoder  
Дата: 20.08.13 15:50
Оценка:
---
Отредактировано 20.12.2016 16:53 UCoder . Предыдущая версия . Еще …
Отредактировано 20.12.2016 16:53 UCoder . Предыдущая версия .
Re[3]: Как использовать 32-битную надстройку в Excel 64-бит?
От: baranovda Российская Империя  
Дата: 20.08.13 16:08
Оценка:
Здравствуйте, UCoder, Вы писали:

B>>Захости её в COM+


UC>Чуть подробнее?


Я как-то упустил, что AddIn в виде XLL.
Но если у вас существует возможность переписать надстройку как Excel COM-AddIn (IDTExtensibility2), то её можно хостить не в процессе Excel, а в процессе-суррогате (COM+). В этом случае будет работать маршаллинг, которому, если упрощенно, разрядность безразлична. Но вообще это костыль и лучше таки иметь две сборки под конкретную разрядность.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.