Delphi

本类阅读TOP10

·分布式网络考试系统原型分析及实现
·游戏外挂设计技术探讨①
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·试题库开发中非文本数据的处理
·如何将几个DBGRID里的内容导入同一个EXCEL表中....的问题
·如何使用Delphi设计强大的服务器程序
·工人线程中关闭窗体的实现
·用DLL方式封装MDI子窗体。
·支持XP下托盘栏气球提示的托盘单元

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
用程序删除已注册的COM+应用程序

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

使用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的帮助




相关文章

相关软件