关闭

Matlab---如何利用Com对象

标签: MatlabCom对象
505人阅读 评论(0) 收藏 举报
分类:
% 1获取Com对象清单
list = actxcontrollist;  
s=sprintf(' Name = %s\n ProgID = %s\n File = %s\n', list{114:115,:});


h = actxcontrolselect;% 获取GUI控件


% 2 查找某个Com对象。
for ii = 1:length(list)
   if ~isempty(strfind([list{ii,:}],'word')) 
      s = sprintf(' Name = %s\n ProgID = %s\n File = %s\n', ...
             list{ii,:})
   end
end


% 3 获取GUI COM控件
s=actxcontrolselect;


% 4 创建Com对象、 
e=actxserver('Excel.application');
e.visible=1; %可视化
eWorkbooks=e.Workbooks; 
w=eWorkbooks.Add  


%5 获取属性、接口
e.get % 提取属性用get  
isprop %是否是属性
isinterface% 是否是接口
e.get('Visible') %提取某个属性的值  e.visible  e.Visible  属性不区分大小写
e.visible=1; e.set('visile',1); set(e,'visible',1) ;% 修改属性
 
cal = actxcontrol('mscal.calendar', [0 0 500 500]);
cal.propedit  % 可视化修改属性

e.addproperty('positon')
e.deleteproperty('positon')


%6 获取方法
e.invoke% 提取方法用invoke
e.methods% 提取方法用methods 
e.methods('-full') % 详细信息
e.methodsview  % 提取方法用methods  可视化
ismethod
%7 获取事件
e.events
e.eventlisteners % 显示未注册的事件
isevent

%8 退出
e.Workbook.Close
e.Quit; %  退出实例,还可以重新调用。  
e.release %释放控制 ,不能重新调用了。
e.delete;% 释放控制,删除对象, 不能重新调用了。

delete(e)


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

分享一个类,用于整合Com对象的属性,接口,类,方法

classdef   getCom      
    properties
        interface
        subinterface
        propoties
        method
        class
        event
    end
    
    methods
        function obj=getCom(Component)
           
                obj.interface=Component;
                obj.event=Component.events;
                obj.method=Component.methods;
                obj.class=Component.class;
                s=Component.get;
                [obj.propoties,obj.subinterface]=getprop_subinterface(s);                
             
        end
    end
      methods
          function  [propoties,subinterface]=getprop_subinterface(s) 
              n=0;m=0;
              fieldslist=fields(s);
              for i=1:length(fieldslist) 
                  if isinterface(s.(fieldslist{i}))
                         m=m+1;
                   subinterface.(fieldslist{i})=s.(fieldslist{i});
                  else
                    n=n+1;
                  propoties.(fieldslist{i})=s.(fieldslist{i});  
                  end
                
              end   
              propoties=orderfields(propoties);
              subinterface=orderfields(subinterface);
          end
            
      end
    
end






0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7828次
    • 积分:139
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:12篇
    • 译文:0篇
    • 评论:0条
    文章分类