linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > Delphi >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·HexToStr函数和StrToHex函数
·Delphi中的进制转换
·delphi轻松设置无边框透明窗体
·delphi第三方控件安装(Ehlib)
·DELPHI组件安装全攻略
·delphi动态创建控件
·开发工具比较Visual C++ VS De
·delphi完整身份证效验程序实例
·delphi中的Format函数详解
·delphi编程获取打印机的打印任
·如何判断文本文件的编码格式
·深入研究Variant数组
·用delphi编写网络游戏的外挂
·Delphi技巧-用户自定义数据类型
·delphi设置控件透明
最新文章
·在应用程序中跟踪MOUSE的坐标
·压缩和修复MS Access 2000文件
·DELPHI 6.0 动画制做
·怎样在Delphi中调用LastError信
·怎样得到主域服务器名称
·怎样利用递归实现删除某一目录
·读出主键下所有项
·如何制作照片底片效果的图像(
·获得Modem的状态
·WebBrowser屏幕滚动的实现,设
·有关字符串处理的小技巧
·Delphi建立键盘鼠标动作纪录与
·Delphi中布尔类型辨析
·DELPHI程序注册码设计
·图形的不规则的Copy
Google
 
用程序删除已注册的COM+应用程序
[ 作者:  加入时间:2007-11-26 13:31:25  来自:Linux联盟收集整理 ]
使用COM接口MijLinux联盟
1. 找到接口描述文件COMAdmin_TLB.pasMijLinux联盟
还是用了个笨办法,新建一个ActiveX Library,再新建一个COM Object,随便起个名字吧。保存。MijLinux联盟
然后选菜单View->Type Library,在右边Uses页中点右键,选择查看所有类型库,找到COM+1.0 Admin Type Library,保存。OK,在你的保存目录下有了一个COMAdmin_TLB.pas,拷出来,其它的可以删除啦:)MijLinux联盟
2. 我们来删除一个COM+应用程序MijLinux联盟
新建一个Delphi工程,保存。添加我们刚才生成的COMAdmin_TLB.pas,别忘了uses啊:)MijLinux联盟
在COMAdmin_TLB.pas中一共有三个接口,看名字大概能猜出几分MijLinux联盟
ICOMAdminCatalog     管理COM+目录的接口MijLinux联盟
ICatalogObject       COM+对象的接口MijLinux联盟
ICatalogCollection   COM+对象集合的接口MijLinux联盟
MijLinux联盟
procedure TForm1.Button1Click(Sender: TObject);MijLinux联盟
varMijLinux联盟
  temp:IDispatch;MijLinux联盟
  i:integer;MijLinux联盟
CataColl:ICatalogCollection;MijLinux联盟
  CataObj:ICatalogObject;MijLinux联盟
  COMADminCata:ICOMAdminCatalog;MijLinux联盟
beginMijLinux联盟
file://先创建一个ICOMAdminCatalog的接口指针,用于MijLinux联盟
self.COMADminCata := CoCOMAdminCatalog.Create;MijLinux联盟
file://取得ICatalogCollection的接口指针,指向的是COM+应用程序的集合,注意参数是MijLinux联盟
file://字符串,Delphi帮助中有这样一段话:有效的集合依赖于你的COMAdmin Library的MijLinux联盟
file://版本,查看微软的文档来找到在你的COMAdmin Library版本中有效的集合MijLinux联盟
temp := self.COMADminCata.GetCollection('Applications');MijLinux联盟
   self.CataColl := Iunknown(temp) as ICataLogCollection;MijLinux联盟
file://下一句不可少,执行了它才真正读到的数据MijLinux联盟
self.CataColl.Populate;MijLinux联盟
file://来个循环查找并删除,你可以新建一个叫aaa的COM+应用程序来进行测试,循环次MijLinux联盟
file://数为COM+应用程序的个数 –1,因为我们在循环中删了一个COM+应用程序MijLinux联盟
for i := 0 to self.CataColl.Count - 2 doMijLinux联盟
   beginMijLinux联盟
  file://这是取第I个应用程序集合中的对象MijLinux联盟
     self.CataObj := Iunknown(self.CataColl.Item[i]) as ICatalogObject;MijLinux联盟
  file://你可以打出来名字看看和你在组件服务中的是否一样MijLinux联盟
     showmessage(self.CataObj.Name);MijLinux联盟
  file://如果对象名字是aaa,那么我们要进行删除啦MijLinux联盟
     if self.CataObj.Name = 'aaa' thenMijLinux联盟
     beginMijLinux联盟
        self.CataColl.Remove(i);MijLinux联盟
   file://下一句有点像提交事务,如果你不写,是不会真正删除的MijLinux联盟
        self.CataColl.SaveChanges;MijLinux联盟
     end;MijLinux联盟
   end;MijLinux联盟
end;MijLinux联盟
MijLinux联盟
使用Delphi控件MijLinux联盟
无意中点了一下帮助,居然发现Delphi有一个类将这些接口封装了(Delphi就是好,呵呵)。好,我们就用这个控件封装的类来实现删除MijLinux联盟
类定义在CmAdmCtl中,在主窗体中uses一下即可MijLinux联盟
对应于前面描述的COM接口,Delphi为我们封装了三个类MijLinux联盟
TCOMAdminCatalog = class(TOleServer)MijLinux联盟
TCOMAdminCatalogObject = class(TOleServer)MijLinux联盟
TCOMAdminCatalogCollection = class(TOleServer)MijLinux联盟
有了前面的描述,第二个程序好写多了MijLinux联盟
procedure TForm1.Button2Click(Sender: TObject);MijLinux联盟
varMijLinux联盟
  CataColl:TCOMAdminCatalogCollection;MijLinux联盟
  CataObj:TCOMAdminCatalogObject;MijLinux联盟
  COMADminCata:TCOMAdminCatalog;MijLinux联盟
  i:integer;MijLinux联盟
beginMijLinux联盟
  COMADminCata := TCOMAdminCatalog.Create(self);MijLinux联盟
  CataColl := COMADminCata.GetCollection('Applications');MijLinux联盟
  CataColl.Populate;MijLinux联盟
  for i := 0 to CataColl.Count - 2 doMijLinux联盟
  beginMijLinux联盟
    CataObj := CataColl.Get_Item(i);MijLinux联盟
    showmessage(CataObj.Name);MijLinux联盟
    if CataObj.Name = 'aaa' thenMijLinux联盟
    beginMijLinux联盟
      CataColl.Remove(i);MijLinux联盟
      CataColl.SaveChanges;MijLinux联盟
    end;MijLinux联盟
  end;MijLinux联盟
  COMADminCata.Free;MijLinux联盟
end;MijLinux联盟
MijLinux联盟
还有很多功能,比如导出应用程序,安装应用程序等等操作,函数名写的很清楚,具体可以看Delphi的帮助MijLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息