Использование 64-битного ActiveX компонента из .NET сборки
Вопрос:
Я использовал утилиты ADN (ADN utilities), которые включают несколько ActiveX компонентов. Теперь я портирую мой проект на 64-разрядную Windows и скачал 64-разрядные версии этих компонентов, однако я не могу поместить их на мою форму в Visual Studio.
Ответ:
Visual Studio - 32-разрядное приложение даже на 64-разрядной операционной системе, и она не поддерживает 64-разрядные ActiveX компоненты в Дизайнере форм (Form Designer). Но вы можете создать компонент программно в вашем коде.
В следующем примере я добавлю компонент AcadColor.ocx к моей .NET форме.
Первое что нам понадобится – это создать обертку для ActiveX компонента. Я запускаю Visual Studio 2008 x64 Win64 Command Prompt, перехожу в каталог с компонентом и напускаю на него aximp.exe: Примечание: в Vista/Windows 7 нужно запускать утилиты командной строки с соответствующими правами – нажмите правую кнопку мыши на ярлыке командной строки и выберите Запуск от имени… (Run as administrator)
Если вы увидите сообщение об ошибке AxImp Error: Did not find a registered ActiveX control in ..., тогда сначала зарегистрируйте компонент в этой же командной строке с использованием regsvr32 AcadColor.ocx.
Теперь мы можем сослаться на 2 созданных dll из проекта (AutoCADColor.dll и AxAutoCADColor.dll) а затем добавьте следующий код в конструктор формы:
- using System;
- using System.Windows.Forms;
- namespace TestActiveX
- {
- public partial class Form1 : Form
- {
- private AxAutoCADColor.AxAcadColor acadColor;
- public Form1()
- {
- InitializeComponent();
- acadColor = new AxAutoCADColor.AxAcadColor();
- acadColor.Location = new System.Drawing.Point(7, 7);
- acadColor.Size = new System.Drawing.Size(150, 20);
- acadColor.Visible = true;
- this.Controls.Add(acadColor);
- }
- }
- }
Скомпилируйте проект как Any CPU или x64 и запустите его:
Источник: http://adndevblog.typepad.com/autocad/2012/07/use-64-bit-activex-component-from-a-net-assembly.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=174
Опубликовано 12.08.2013Отредактировано 19.08.2013 в 14:39:08