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

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

Posts Tagged ‘activex’

Использование элементов 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); // устанавливаем новое значение

Ресурсы:

Posted in Разное, Разработка | Отмечено: , , | Leave a Comment »

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