Matlab---如何利用Com对象

来源:互联网 发布:java python 比较 编辑:程序博客网 时间:2024/05/22 09:06
% 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






原创粉丝点击