国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用程序刪除已注冊的COM+應用程序

2019-11-18 18:36:15
字體:
來源:轉載
供稿:網友
 

使用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?。海?BR>在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的幫助


上一篇:TFontNameComboBox及TFontSizeComboBox的實現

下一篇:監控鍵盤并在得到特定按鍵后輸出特殊字到剪貼板

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 固阳县| 明星| 漾濞| 武陟县| 馆陶县| 大石桥市| 沈丘县| 荥经县| 石河子市| 太和县| 舟山市| 宁蒗| 东阿县| 尼玛县| 洞口县| 玛沁县| 道真| 台南市| 平果县| 土默特左旗| 渭源县| 南安市| 云霄县| 科尔| 吴堡县| 沙雅县| 双牌县| 永顺县| 安平县| 茂名市| 涿鹿县| 十堰市| 馆陶县| 同江市| 平远县| 沾化县| 尚志市| 兴和县| 北票市| 平塘县| 武陟县|