@matlab中将软件以控件的形式调用
主要使用的函数是actxserver
1. com控件
用matlab打开word,此处以word为例,是通过将其作为com控件调用实现的。
com控件可以分为dll和.exe,其中dll(dynamic link library)叫做动态链接库(打开一些软件所在的文件夹就能看到),也叫做进程内组件;.exe叫做可执行文件,也可以叫做进程外组件。这俩个之间大致的区别就在于dll打开是也要打开应用程序,.exe打开时独立打开一个进程,也就是说不要求相关的应用程序必须要打开。这俩者的区别有点像linux中的sf和hf(软链接和硬链接)。
2.函数actxserver
word=actxserver(‘Word.Application’);
以上这一行代码实现将电脑上已存在的word软件作为一个控件(word不一定打开),
也可以通过
try
actxGetRunningServer(‘Word.Application’)
catch
word=actxserver(‘Word.Application’);
end
来判断word是否是在打开的状态,如果是的话,就catch住并返回一个word的句柄。如果不是就创建一个word的控件。
其实这个时候已经创建了一个word控件,但是我们并没有看见,要将这个word的属性Visible设置为1(可见;0:不可见)
word.Visible=1; or set(word,‘Visible’,1); or word.set(‘Visible’,1);
就能看到已经顺利打开word了(如果你有一些word里面的库没装好可能会报个错,但是这不影响)。
documents=word.Document;
document=documents.invoke(‘Add’);
以上两行代码就是打开了一个新的word文档。
word作为控件包含很多接口(interface),每个接口都有不同的功能和属性。
下面仅介绍部分接口:** Content**、Selection、Paragraphs,且继续以之前的word控件为例。(接口的首字母是Caps,大写)
(鉴于没有用到图形界面不用到java虚拟机和simulink,这样在cmd里面输入matlab -nojvm就能打开一个轻量级的matlab,安装matlab时自带有的,不要用到与图形界面有关的命令就不会报错。打开很方便也很快)
在使用接口之前,要先生成对应接口的句柄。
**1).**Content接口
get函数可以查看接口的属性和方法
content=document.Content;
content接口中部分接口定义如下:
Text:在光标处写入一段指定的内容,
如:
title=‘Matlab is good.’;
content.Text=title;
这样在文档中的光标处(注意是在光标处)就可以输入’Matlab is good.'这样一句话
content.Font.size=15;%设置字体大小
content.Font.Bold=5;%设置字体加粗,0表示不加粗
content.Paragraphs.Alignment=’wdAlignParagraphCenter’;%居中对齐,Center改为Left、Right对应左右对齐
**2).**Selection接口
Selection接口对一个选定的区域进行操作。
selection=word.Selection;
selection.Start=content.end%(the ‘content’ here is what we’ve mentioned above)将光标移动到之前的content的末尾处,仔细想想看,其实这行代码用得很频繁。
selection.TypeParagraph%换行
%以上两行代码也就实现了对空白区域的选定。
selection.Text=’…’;%在指定位置处输入内容
selection.MoveDown%光标移动到所选区域的末尾处
**3).**Paragraphs接口
p=document.Paragraphs;
p1=p.Item(1)%返回第一个段落的句柄的方法——Item.
p1.Range.Text=’…’;%调用其中的Range接口将指定内容写入光标所在位置
同之前的Content一样,有很多共同的属性: