【MATLAB和C联合编程】如何使用matlab打开pdf、播放视频等,这些都很easy~(教你学习ActiveX)

写作时间:2021-01-08
标题:
【MATLAB】如何使用matlab中打开pdf、播放视频等,这些都很easy~(教你学习ActiveX)
目录:
1.学习这个技能的缘由
2.实现方法
-2.1 调用视频组件
-2.2 调用pdf组件
3.追根到底,搞懂内部机制
-3.1 何为activeX?
-3.2 matlab如何调用与操作activeX组件?
4.总结

正文
1.学习这个技能的缘由
有时候,在使用matlab时,内部的组件又太少,不能满足我们需求的功能。
比如,我们要在figure窗口里面,打开一个视频,如下:
在这里插入图片描述
视频打开了,如下:
在这里插入图片描述

或比如,我们要在figure窗口里面,打开一个pdf,如下:
在这里插入图片描述
等等。。

那么,这些要怎么做呢?
2.实现方法
-2.1 调用视频组件
代码如下:

clc
clear all
%列出该计算机中存在的activeX组件
list=actxcontrollist;
%获取一种activeX控件--WMPlayer.OCX.7
clf
figure
h=actxcontrol("WMPlayer.OCX.7",'position',[0 0 600 400],'parent',gcf);
%获取该activeX控件的方法
h.methods
%文件
filename="F:\EV\emc.mp4";
%示例:使用其openPlayer方法,打开视频
openPlayer(h,filename)

-2.2 调用pdf组件
代码如下:

clc
clear all
%列出该计算机中存在的activeX组件
list=actxcontrollist;
%获取一种activeX控件--AcroPDF.PDF.1
h=actxcontrol("AcroPDF.PDF.1",'position',[0 0 1200 800]);
%获取该activeX控件的方法
h.methods
%获取该activeX控件的方法,以及方法的详细使用方法
methods(h,"-full")
%文件
filename="G:\论文\icme.pdf";
%示例:使用其LoadFile方法,加载pdf文件
LoadFile(h,filename);
%示例:使用其Print 方法,打印文件
Print(h);

-2.3 其他组件的玩法

画猫画虎,依葫芦画瓢,如法炮制,套路一致。

3.追根到底,搞懂内部机制

套路要想玩的溜,那就搞懂本质。

上述操作仅是表象,要明其理,究其本身。
其实上述的视频播放器,pdf 阅读器就类似是一个个的组件。
但是这些组件并不是matlab自带的,这些组件是使用C/C++开发的
所以问题的本质就是:如何使用matlab通过activeX调用C/C++程序。

这些组件有个共同的名称,activeX。
-3.1 何为activeX?

ActiveX是一类软件组件或软件对象,在实际使用中ActiveX常常被插入到网页或者其他的应用程序以完成功能与应用。
1996年,微软在windows系统广泛应用的COM和OLE基础上,提出了ActiveX。

扫描二维码关注公众号,回复: 12423455 查看本文章

COM,component object model,组件对象模型,是一种框架。通过COM技术,用户可以将多个不同应用程序集成到一个复杂的应用方案中。

OLE,object linking ande embedding ,对象链接与嵌入,是一种创建复合文档的技术,复合文档包含了由不同源应用程序创建的、具有不同类型的数据,诸如:文字、声音、图像、应用程序等。

OLE最初版本仅仅面向符合文档,而COM应OLE被提出。其出发点是:让某一个软件通过一个通用的机构为另一个软件服务
OLE最初仅仅面向复合文档,是早于COM提出,但COM是OLE的基础。
COM是一个纯技术名字,ActiveX和OLE是有商标的。ActiveX是宽松定义的,基于COM的技术集合,而OLE依然仅指复合文档。

小结一下:
而C/C++语言是开发ActiveX的主要语言之一。
所以,我们要使用matlab调用activeX组件,然后使用activeX的方法进行操作,就是使用matlab通过activeX调用C/C++程序,是一种matlab调用C/C++程序的途径或者技法。

-3.2 matlab如何调用与操作activeX组件?
我来总结下step:
step1:查看该计算机中存在的activeX组件
step2:调用该组件
step3:查看该组件的方法,操作即可

1)step1

%step1:查看该计算机中存在的activeX组件
list=actxcontrollist;

返回一个元胞数组,如下:
在这里插入图片描述
注:
组件个数的多少,不通电脑有差异。
2)step2

%step2:调用该组件
%以AcroPDF.PDF.1为例
%获取一种activeX控件--AcroPDF.PDF.1
h=actxcontrol("AcroPDF.PDF.1",'position',[0 0 1200 800]);

在这里插入图片描述
3)step3-1

%step3-1:查看该组件的方法,操作即可
%以AcroPDF.PDF.1为例
%获取该activeX控件的方法
h.methods

查看其方法,返回如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

methodsview(h)%这是一种查看控件的好方法。

在这里插入图片描述
这里也小结一下,matlab查看ActiveX控件的3个命令。

%1
methods(h)
% 返回控件handle的方法与名称
%或h.methods
%2
methods(h,"-full")
% 返回控件handle的方法与名称,输入...
%参数类型和返回值类型
%3
methodsview(h)
% 打开控件方法显示面板

这下理解了这句话了吧,ActiveX是一类软件组件或软件对象
4)step3-2

%step3-2:查看该组件的方法,操作即可
%以AcroPDF.PDF.1为例
filename="G:\论文\icme.pdf";
%示例:使用其LoadFile方法,加载pdf文件
LoadFile(h,filename);

在这里插入图片描述

4.总结
再次重复这句话:

C/C++语言是开发ActiveX的主要语言之一。
所以,我们要使用matlab调用activeX组件,然后使用activeX的方法进行操作,就是使用matlab通过activeX调用C/C++程序,是一种matlab调用C/C++程序的途径或者技法。

多说一句:
上述的这些方法,其实实战价值不高,我也是瞎琢磨,主要是理解 软件的设计思想,以及matlab与 C/C++,程序设计,框架等的关系。
重在悟“道”明“理”,而非学“技”学“术”


THE END~


附: 更多阅读
【MATLAB-app】系列教程(含视频)00_csdn上第一套关于matlab appdesigner系列“视频课”来啦~~

【图像算法&MATLAB】一文讲明白:图像的直方图均衡化(附作者自编源代码)

【探测器与相机标准】我对图像(图像传感器/相机)“非均匀性”的理解与学习笔记

猜你喜欢

转载自blog.csdn.net/hahahahhahha/article/details/112343562