⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 regderegserver.pas

📁 About delphi opc server a good file...
💻 PAS
字号:
unit RegDeRegServer;

interface

uses Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,
     MRD_TLB,Registry,OPCDA;

procedure RegisterTheServer(name:string);
procedure UnRegisterTheServer(name:string);

implementation

uses ComObj,ComCat;

procedure RegisterTheServer(name:string);
var
 aReg:TRegistry;
 hr:HRESULT;
 myCLSIDString:string;
begin
 myCLSIDString:=GUIDToString(CLASS_DA2);
 aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.OpenKey(name,true);
  aReg.WriteString('','MRD Data Access Server Version 2.0');
 finally
  aReg.CloseKey;
  aReg.Free;
 end;

 aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.OpenKey(name+'\Clsid',true);
  aReg.WriteString('',myCLSIDString);
 finally
  aReg.CloseKey;
  aReg.Free;
 end;

{       this is only needed for Data Access Version 1.0 according
        to the spec.

aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.OpenKey(name+'\OPC',true);
 finally
  aReg.CloseKey;
  aReg.Free;
 end;

}

 aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.OpenKey('CLSID\'+myCLSIDString,true);
  aReg.WriteString('','MRD OPC Data Access 2.0');
 finally
  aReg.CloseKey;
  aReg.Free;
 end;

 aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.OpenKey('CLSID\'+myCLSIDString+'\ProgID',true);
  aReg.WriteString('',name);
 finally
  aReg.CloseKey;
  aReg.Free;
 end;

 hr:=CreateComponentCategory(CATID_OPCDAServer20,'MRD OPC Data Access');
 if hr <> 0 then
  ;
 hr:=RegisterCLSIDInCategory(CLASS_DA2,CATID_OPCDAServer20);
 if hr <> 0 then
  ;
end;

procedure UnRegisterTheServer(name:string);
var
 aReg:TRegistry;
 hr:HRESULT;
 myCLSIDString:string;
begin
 myCLSIDString:=GUIDToString(CLASS_DA2);
 aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.DeleteKey('CLSID\'+myCLSIDString+'\ProgID');
 finally
  aReg.CloseKey;
  aReg.Free;
 end;

 aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.DeleteKey('CLSID\'+myCLSIDString);
 finally
  aReg.CloseKey;
  aReg.Free;
 end;

{       this is only needed for Data Access Version 1.0 according
        to the spec.

 aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.DeleteKey(name+'\OPC');
 finally
  aReg.CloseKey;
  aReg.Free;
 end;
}

 aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.DeleteKey(name+'\Clsid');
 finally
  aReg.CloseKey;
  aReg.Free;
 end;

 aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.DeleteKey(name);
 finally
  aReg.CloseKey;
  aReg.Free;
 end;

 hr:=UnRegisterCLSIDInCategory(CLASS_DA2,CATID_OPCDAServer20);
 if hr <> 0 then
  ;

 hr:=UnCreateComponentCategory(CATID_OPCDAServer20,'MRD OPC Data Access');
 if hr <> 0 then
  ;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -