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;  
posted @ 2008-06-06 11:12  陆岛工作室  阅读(580)  评论(0编辑  收藏  举报