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

uses ComObj

//安装COM+应用程序

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


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


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

//客户端连接计数 TRMDServer是你的COM类定义
COM+应用程序控制procedure TRMDServer.RemoteDataModuleCreate(Sender: TObject); 
COM+应用程序控制
begin 
COM+应用程序控制  Inc(Querycount); 
COM+应用程序控制
end
COM+应用程序控制
COM+应用程序控制
procedure   TRMDServer.RemoteDataModuleDestroy(Sender: TObject); 
COM+应用程序控制
begin   
COM+应用程序控制  Dec(Querycount); 
COM+应用程序控制
end;  
COM+应用程序控制

相关文章: