Заметки консультанта

Шамрай Александр Владимирович

Использование элементов ActiveX для Eclipse Plug-in

Posted by Шамрай Александр на Сентябрь 9, 2009

Если кому необходимо использовать ActiveX элементы для плагинов Eclipse, то для этого нужно использовать библиотеки SWT, которые содержат функции для работы с OLE объектами. Вот и меня постигла такая потребность, поэтому пришлось немного поэкспериментировать. Если что указал ниже некорректно, то прошу шибко не судить, т.к. java я использовал первый раз, что уж говорить про разработку плагинов к Eclipse.

Для начала своих опытов я скачал Eclipse, который содержит все, что нужно для создания плагинов: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/R/eclipse-rcp-galileo-win32.zip

Далее создал проект «Plug-in project» и при создании в мастере выбрал шаблон плагина «Plug-in with a view». И уже в новый проект добавил импорт необходимых классов:

import org.eclipse.swt.ole.win32.OleAutomation;
import org.eclipse.swt.ole.win32.OleControlSite;
import org.eclipse.swt.ole.win32.OleFrame;
import org.eclipse.swt.ole.win32.Variant;

Далее в классе представления плагина определил переменные необходимые для работы с OLE объектом:

private OleControlSite olesite;
private OleAutomation oleauto;

И в функцию createPartControl, предварительно убрав лишнее, внес изменения, т.е. добавление элемента на страницу представления:

public void createPartControl(Composite parent) {
        OleFrame frame = new OleFrame(parent, SWT.NONE);
        olesite = new OleControlSite(frame, SWT.NONE, «Word.Document»);
        oleauto = new OleAutomation(olesite);
}

 

Если же необходимо использовать методы и свойства встроенного элемента, то можно использовать следующие функции класса OleAutomation:

  • setProperty – установить значение для свойства
  • getProperty – получить значение для свойства
  • invoke – выполнить метод

Небольшой пример для присваивания значения свойству:

        Variant valueq = new Variant((String) «New value»); // определяем новое значение
        int[] rgdispid = oleauto.getIDsOfNames(new String[]{«CtlName»});    // получаем номер свойства по его наименованию
        oleauto.setProperty(rgdispid[0], valueq); // устанавливаем новое значение

Ресурсы:

Advertisements

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

 
%d такие блоггеры, как: