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、付费专栏及课程。

余额充值