COM+应用程序控制

介绍几个控制应用程序的代码函数。安装COM程序、卸载COM+应用程序、启动/关闭COM+服务等。

uses ComObj

//安装COM+应用程序

function InstallCOMApplication:Boolean;
const
  SComApplicationName 
= '你的应用程序名';
  SFullDllFileName 
= 'C:\a.dll';//你的DLL,这里只注册一个DLL
var
  COMAdminCatalog : OleVariant;
  CatalogCollection : OleVariant;
  CatalogObject : OleVariant;
  i : Integer;
begin
  try
    COMAdminCatalog :
= CreateOleObject('COMAdmin.COMAdminCatalog');
    CatalogCollection :
=
    COMAdminCatalog.GetCollection(
'Applications');
    CatalogCollection.Populate;
    
    
for i := 0 to CatalogCollection.Count - 1 do
      
if CatalogCollection.Item[i].Name = SComApplicationName then Break;

    
if i = CatalogCollection.Count then
    
begin
      CatalogObject :
= CatalogCollection.Add;
      CatalogObject.Value[
'Name'] := SComApplicationName;
      CatalogCollection.SaveChanges;
    
end
    
else
      CatalogObject :
= CatalogCollection.Item[i];
    COMAdminCatalog.InstallComponent(
    CatalogObject.Name,
    SFullDllFileName,
'','');
    Result :
= True;
  except
    Result :
= False;
  
end;
end;


//卸载COM+应用程序
function UnInstallCOMApplication:Boolean;stdcall;
const
  SComApplicationName 
= '你的应用程序名';
var
  COMAdminCatalog : OleVariant;
  CatalogCollection : OleVariant;
  i : Integer;
begin
  try
    COMAdminCatalog :
= CreateOleObject('COMAdmin.COMAdminCatalog');
    CatalogCollection :
= COMAdminCatalog.GetCollection('Applications');
    CatalogCollection.Populate;
    
for i := 0 to CatalogCollection.Count - 1 do
      
if CatalogCollection.Item[i].Name = SComApplicationName then
      
begin
        CatalogCollection.Remove(i);
        CatalogCollection.SaveChanges;
        Break;
      
end;
    Result :
= True;
  except
    Result :
= False;
  
end;
end;


//启动/关闭COM+服务
function StartCOMService(const AStart : Boolean):Boolean;
const
  SComApplicationName 
= '你的应用程序名';
var
  COMAdminCatalog : OleVariant;
  CatalogCollection : OleVariant;
  i : Integer;
begin
  Result :
= False;
  try
    COMAdminCatalog :
= CreateOleObject('COMAdmin.COMAdminCatalog');
    CatalogCollection :
= COMAdminCatalog.GetCollection('Applications');
    CatalogCollection.Populate;
    
    
for i := 0 to CatalogCollection.Count - 1 do
      
if CatalogCollection.Item[i].Name = SComApplicationName then
      
begin
        
if AStart then
          COMAdminCatalog.StartApplication(SComApplicationName)
        
else
          COMAdminCatalog.ShutdownApplication (SComApplicationName);
        Result :
= True;
        Break;
      
end;
  except
    
end;
  
end;
end;

//客户端连接计数 TRMDServer是你的COM类定义
procedure TRMDServer.RemoteDataModuleCreate(Sender: TObject); 
begin 
  Inc(Querycount); 
end

procedure   TRMDServer.RemoteDataModuleDestroy(Sender: TObject); 
begin   
  Dec(Querycount); 
end;  

转载于:https://www.cnblogs.com/iinsnian/archive/2008/06/06/1215010.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值