转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
用程序删除已注册的COM+应用程序         ★★★★

用程序删除已注册的COM+应用程序

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1062 更新时间:2009/4/23 18:38:22

使用COM接口
1. 找到接口描述文件COMAdmin_TLB.pas
还是用了个笨办法,新建一个ActiveX Library,再新建一个COM Object,随便起个名字吧。保存。
然后选菜单View->Type Library,在右边Uses页中点右键,选择查看所有类型库,找到COM+1.0 Admin Type Library,保存。OK,在你的保存目录下有了一个COMAdmin_TLB.pas,拷出来,其它的可以删除啦:)
2. 我们来删除一个COM+应用程序
新建一个Delphi工程,保存。添加我们刚才生成的COMAdmin_TLB.pas,别忘了uses啊:)
在COMAdmin_TLB.pas中一共有三个接口,看名字大概能猜出几分
ICOMAdminCatalog     管理COM+目录的接口
ICatalogObject       COM+对象的接口
ICatalogCollection   COM+对象集合的接口

procedure TForm1.Button1Click(Sender: TObject);
var
  temp:IDispatch;
  i:integer;
CataColl:ICatalogCollection;
  CataObj:ICatalogObject;
  COMADminCata:ICOMAdminCatalog;
begin
 file://先创建一个ICOMAdminCatalog的接口指针,用于
 self.COMADminCata := CoCOMAdminCatalog.Create;
file://取得ICatalogCollection的接口指针,指向的是COM+应用程序的集合,注意参数是
file://字符串,Delphi帮助中有这样一段话:有效的集合依赖于你的COMAdmin Library的
file://版本,查看微软的文档来找到在你的COMAdmin Library版本中有效的集合
 temp := self.COMADminCata.GetCollection(''''Applications'''');
   self.CataColl := Iunknown(temp) as ICataLogCollection;
 file://下一句不可少,执行了它才真正读到的数据
 self.CataColl.Populate;
file://来个循环查找并删除,你可以新建一个叫aaa的COM+应用程序来进行测试,循环次
file://数为COM+应用程序的个数 –1,因为我们在循环中删了一个COM+应用程序
 for i := 0 to self.CataColl.Count - 2 do
   begin
  file://这是取第I个应用程序集合中的对象
     self.CataObj := Iunknown(self.CataColl.Item[i]) as ICatalogObject;
  file://你可以打出来名字看看和你在组件服务中的是否一样
     showmessage(self.CataObj.Name);
  file://如果对象名字是aaa,那么我们要进行删除啦
     if self.CataObj.Name = ''''aaa'''' then
     begin
        self.CataColl.Remove(i);
   file://下一句有点像提交事务,如果你不写,是不会真正删除的
        self.CataColl.SaveChanges;
     end;
   end;
end;

使用Delphi控件
无意中点了一下帮助,居然发现Delphi有一个类将这些接口封装了(Delphi就是好,呵呵)。好,我们就用这个控件封装的类来实现删除
类定义在CmAdmCtl中,在主窗体中uses一下即可
对应于前面描述的COM接口,Delphi为我们封装了三个类
TCOMAdminCatalog = class(TOleServer)
TCOMAdminCatalogObject = class(TOleServer)
TCOMAdminCatalogCollection = class(TOleServer)
有了前面的描述,第二个程序好写多了
procedure TForm1.Button2Click(Sender: TObject);
var
  CataColl:TCOMAdminCatalogCollection;
  CataObj:TCOMAdminCatalogObject;
  COMADminCata:TCOMAdminCatalog;
  i:integer;
begin
  COMADminCata := TCOMAdminCatalog.Create(self);
  CataColl := COMADminCata.GetCollection(''''Applications'''');
  CataColl.Populate;
  for i := 0 to CataColl.Count - 2 do
  begin
    CataObj := CataColl.Get_Item(i);
    showmessage(CataObj.Name);
    if CataObj.Name = ''''aaa'''' then
    begin
      CataColl.Remove(i);
      CataColl.SaveChanges;
    end;
  end;
  COMADminCata.Free;
end;

还有很多功能,比如导出应用程序,安装应用程序等等操作,函数名写的很清楚,具体可以看Delphi的帮助


[C语言系列]一个参数解决应用程序中WebBrowser的缓存问题  [Web开发]网站应用程序池与运行时错误
[Web开发]vb6.exe - 应用程序错误的原因及解决办法  [网络技术]如何让应用程序和Socket等系统组件集成在一起
[电脑技术]IE错误之应用程序发生异常unknown software excep…  [系统软件]依恋Windows?协助你将应用程序搬家到Unix
[系统软件]Ubuntu10大应用程序和改进  [系统软件]超级DIY 用注册表给应用程序加口令
[Web开发]开发保留标准浏览器功能的AJAX应用程序  [Web开发]如何使用ajax开发web应用程序
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台