MATLAB обеспечивает две функции, чтобы создать COM-объект:
actxcontrol
Создает управление Microsoft® ActiveX® в окне фигуры MATLAB.
actxserver
Создает внутрипроцессорный сервер для компонента динамически подключаемой библиотеки (DLL) или сервер из процесса для исполняемого компонента (EXE).
Следующая схема показывает основные шаги в создании серверного процесса. Для получения дополнительной информации о том, как программное обеспечение MATLAB устанавливает интерфейсы к результирующему COM-объекту, см. интерфейсы COM-объектов.
Можно создать экземпляр элемента управления ActiveX от клиента MATLAB, использующего или пользовательский интерфейс (actxcontrolselect
) или функцию actxcontrol
из командной строки. Любой из этих методов создает экземпляр управления в клиентском процессе MATLAB и возвращает указатель на первичный интерфейс к COM-объекту. Через этот интерфейс можно получить доступ к общественным собственностям или методам объекта. Можно также установить больше интерфейсов к объекту, включая интерфейсы то использование IDispatch.
В этом разделе описывается создать экземпляр управления и как расположить его в окно фигуры MATLAB.
Функция actxcontrollist
показывает вам, какие средства управления COM в настоящее время устанавливаются в вашей системе. Ввод:
list = actxcontrollist
MATLAB отображает массив ячеек, перечисляющий каждое управление, включая его имя, программируемый идентификатор (Проценуроз) и имя файла.
Этот пример показывает информацию для нескольких средств управления (ваши результаты могут отличаться):
list = actxcontrollist; s = sprintf(' Name = %s\n ProgID = %s\n File = %s\n', list{114:115,:})
Отображения MATLAB:
s = Name = OleInstall Class ProgID = Outlook Express Mime Editor File = OlePrn.OleInstall.1 Name = OutlookExpress.MimeEdit.1 ProgID = C:\WINNT\System32\oleprn.dll File = C:\WINNT\System32\inetcomm.dll
Если вы знаете имя управления, можно отобразить его ProgID и путь папки, содержащей его. Например, некоторые примеры в этой документации используют управление Mwsamp2
. Можно найти его со следующим кодом:
list = actxcontrollist; for ii = 1:length(list) if ~isempty(strfind([list{ii,:}],'Mwsamp2')) s = sprintf(' Name = %s\n ProgID = %s\n File = %s\n', ... list{ii,:}) end end
s = Name = Mwsamp2 Control ProgID = MWSAMP.MwsampCtrl.2 File = D:\Apps\MATLAB\R2006a\toolbox\matlab\winfun\win32\mwsamp2.ocx
Местоположение этого файла зависит от вашей установки MATLAB.
Используя actxcontrolselect
функция является самым простым способом создать экземпляр объекта управления. Эта функция отображает все средства управления, установленные в вашей системе. Когда вы выбираете элемент из списка и нажимаете кнопку Create, MATLAB создает управление и возвращает указатель на него. Ввод:
h = actxcontrolselect
MATLAB отображает диалоговое окно Select an ActiveX Control. Интерфейс имеет панель выбора Списка элементов управления ActiveX слева и панель Предварительного просмотра справа. Чтобы видеть предварительный просмотр управления, кликните по одним из имен элементов управления в панели выбора. (Пустая панель предварительного просмотра означает, что управление не имеет предварительного просмотра.), Если MATLAB не может создать экземпляр, сообщение об ошибке появляется в панели предварительного просмотра.
Setting Properties с actxcontrolselect
. Чтобы изменить значения свойств при создании управления, кликните по Кнопке свойства в панели Предварительного просмотра. Можно выбрать, какое окно фигуры вставить управление (Родительское поле), где расположить его в окно (Поля x и y), и что размер сделать управление (Ширина и Высота).
Можно указать события, на которые вы хотите, чтобы управление ответило в этом окне. Введите имя стандартной программы справа от события под Обработчиком событий.
Можно выбрать стандартные программы обратного вызова путем нажатия на имя в конечном счете столбец, и затем нажатия на Кнопку обзора. Чтобы присвоить стандартную программу обратного вызова больше чем одному событию, сначала нажмите клавишу CTRL и кликните по именам одиночных соревнований. Также перетащите мышь по последовательным именам события, и затем нажмите Browse, чтобы выбрать стандартную программу обратного вызова.
MATLAB только отвечает на указанные события, поэтому если вы не задаете обратный вызов, событие проигнорировано.
Например, в панели Списка элементов управления ActiveX, выберите Calendar Control 10.0 (версия в вашей системе может отличаться), и нажмите Properties. MATLAB отображает диалоговое окно Choose ActiveX Control Creation Parameter. Чтобы изменить размер по умолчанию для управления, введите Ширину 500
и Высоту 350
. Чтобы создать экземпляр Календарного управления, нажмите ОК в этом окне и нажмите Create в следующем окне.
Можно также установить параметры управления с помощью функции actxcontrol
. Один параметр, который можно установить с actxcontrol
, но не с actxcontrolselect
, является именем файла инициализации. Когда вы задаете это имя файла, MATLAB устанавливает начальное состояние управления к тому из ранее сохраненного управления.
Информация Возвращена actxcontrolselect
. Функция actxcontrolselect
создает объект, который является экземпляром COM-класса MATLAB. Функция возвращает до двух аргументов: указатель для объекта, h
и 1
-by-3
массив ячеек, info
, содержа информацию об управлении. Чтобы получить эту информацию, введите:
[h, info] = actxcontrolselect
Массив ячеек info
показывает имя, ProgID и имя файла для управления.
Если вы выбираете Calendar Control, и затем нажимаете Create, информацию об отображениях MATLAB как:
h = COM.mscal.calendar.7 info = [1x20 char] 'MSCAL.Calendar.7' [1x41 char]
Чтобы расширить массив ячеек info
, введите:
info{:}
Отображения MATLAB:
ans = Calendar Control 9.0 ans = MSCAL.Calendar.7 ans = D:\Applications\MSOffice\Office\MSCAL.OCX
Если вы уже знаете, какое управление вы хотите, и вы знаете его ProgID, используете функцию actxcontrol
, чтобы создать экземпляр управления.
ProgID является единственным необходимым входным параметром к этой функции. Кроме того, можно выбрать, какое окно фигуры вставить управление, где расположить его в окно, и что размер сделать его. Можно также указать события, вы хотите, чтобы управление ответило на или установило начальное состояние управления путем чтения того состояния из файла. Смотрите страницу с описанием actxcontrol
для полного объяснения ее входных параметров.
Функция actxcontrol
возвращает указатель на первичный интерфейс к объекту. Используйте этот указатель, чтобы сослаться на объект в других вызовах функции COM. Можно также использовать указатель, чтобы получить больше интерфейсов к объекту. Для получения дополнительной информации об использовании интерфейсов см. интерфейсы COM-объектов.
После создания управления можно изменить его форму и положение в окне с функцией move
.
Наблюдайте то, что происходит с объектом, созданным в последнем разделе, когда вы задаете новые координаты источника (70
, 120
) и новые размерности ширины и высоты 400
и 350
:
move(h,[70 120 400 350]);
Контейнер элемента управления ActiveX COM MATLAB не делает оперативный, активируют средства управления, пока они не видимы.
Чтобы создать сервер для компонента, реализованного как динамически подключаемая библиотека (DLL), используйте функцию actxserver
. MATLAB создает экземпляр компонента в том же процессе, который содержит клиентское приложение.
Синтаксисом для actxserver
, когда используется с компонентом DLL, является actxserver(ProgID)
, где ProgID
является программируемым идентификатором для компонента.
actxserver
возвращает указатель на первичный интерфейс к объекту. Используйте этот указатель, чтобы сослаться на объект в других вызовах функции COM. Можно также использовать указатель, чтобы получить больше интерфейсов к объекту. Для получения дополнительной информации об использовании интерфейсов см. интерфейсы COM-объектов.
В отличие от средств управления Microsoft ActiveX, любой пользовательский интерфейс, отображенный сервером, появляется в отдельном окне.
Вы не можете использовать 32-битный незавершенный COM-объект DLL в 64-битном приложении MATLAB. Для получения информации об этом ограничении см. https://www.mathworks.com/matlabcentral/answers/95116-why-am-i-not-able-to-use-32-bit-dll-com-objects-in-64-bit-matlab-7-3-r2006b.
Можно использовать функцию actxserver
, чтобы создать сервер для компонента, реализованного как исполняемый файл (EXE). В этом случае MATLAB инстанцирует компонента в сервере из процесса.
Синтаксисом для actxserver
, чтобы создать исполняемый файл является actxserver(ProgID, sysname)
. ProgID
является программируемым идентификатором для компонента, и sysname
является дополнительным аргументом, используемым в конфигурировании распределенного COM (DCOM) система.
actxserver
возвращает указатель на первичный интерфейс к COM-объекту. Используйте этот указатель, чтобы сослаться на объект в других вызовах функции COM. Можно также использовать указатель, чтобы получить больше интерфейсов к объекту. Для получения дополнительной информации об использовании интерфейсов см. интерфейсы COM-объектов.
Любой пользовательский интерфейс, отображенный сервером, появляется в отдельном окне.
Этот пример создает серверное приложение COM, запускающее программу электронной таблицы Microsoft Excel®. Указатель присвоен h
.
h = actxserver('Excel.Application')
Отображения MATLAB:
h = COM.excel.application
MATLAB может программно соединиться с экземпляром приложения Сервера автоматизации COM, которое уже работает на вашем компьютере. Чтобы получить ссылку на такое приложение, используйте функцию actxGetRunningServer
.
Этот пример получает ссылку на программу Excel, которая должна уже работать на вашей системе. Возвращенный указатель присвоен h
.
h = actxGetRunningServer('Excel.Application')
Отображения MATLAB:
h = COM.excel.application