|
 |
栏目导栏 |
|
| |
|
|
|
|
 |
资料搜索 |
|
| |
|
|
|
|
 |
热门文章 |
|
| |
|
|
|
|
 |
最新文章 |
|
| |
|
|
|
| |
| |
|
|
|
|
使用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论坛讨论 |
|
|
|
|
|