版权声明:本站所有文章均为博主原创,转载时请务必注明出处!商务合作www.xiecan.cc/QQ492384481 https://blog.csdn.net/u011170962/article/details/38023089
自动加载.NET开发的DLL程序库需要修改注册表信息HKEY LOCAL_ MACHINE下的AutoCAD相应版本下的Application项下创建一个新项里而设以下四个键值:
"DESCRIPTION"(应用程序描述)
"LOADC丁RLS"(加载控制一控制程序随CAD加载的方式,设为0x02随CAD启动一起加载)
"LOADER"(应用程序路径)
"MANAG ED"(程序形式一设为0x01,告诉CAD这是托管程序)
注:
1、具体各版木对应的注册表信息见附录。
2、注册表键值”LOADCTRLS',控制说明,控制ARX程序的加载方式
0x01: Load the application upon detection of proxy object.当代理对像被控知时另载相应ARX程序.
0x02: Load the application upon AutoCAD startup.当AutoCAD启动时加载相应ARX程序.
0x04: Load the application upon invocation of a command.当输入命令时加载相应ARX程序.
0x08: Load the application upon request by the user or another application.当有用户或别的程序请求时加载相应ARX程序.
0x10: Do not load the application.从不加载该应用程序.
0x20: Load the application transparently.显式加载该应该程序.
1.注册表文件实现方法:
-
Windows Registry Editor Version
5.00
-
[
HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R18.0\ACAD-8001:804\Applications\XXX]
-
"DESCRIPTION"=
"MyDll"
-
"LOADCTRLS"=dword:
00000014
-
"LOADER"=
"X:\\XXX.dII"
-
"MANAGED"=dword:
00000001
把以上文木复制到一个文木文件中,再把扩展名改为reg运行后,启动AutoCAD应用程序就会自动加载”X:\\XXX.dII',应用程序。
2.C#程序实现方法:
-
private static void AutoLoad(string dname, string desc, string dpath)
-
{
-
RegistryKey LocaIMachine=Registry.LocaIMachine;
-
RegistryKey Applications=
-
LocaIMachine.OpenSubKey(
"SOFTWARE\\Autodesk\\AutoCAD\\R18.0\\ACAD-8001:804\\Applications",
true);
-
RegistryKey MyPrograrm=Applications.
CreateSu bKey(dname);
-
MyPrograrm.SetValue(
"DESCRIPTION", desc, RegistryValueKind.String);
-
MyPrograrm.SetValue(
"LOADCTRLS",
14, RegistryValueKind.DWord);
-
MyPrograrm.SetValue(
"LOADER", dpath, RegistryValueKind.String);
-
MyPrograrm.SetValue(
"MANAGED",
1, RegistryValueKind.DWord);
-
}
注:需要引用Microsoft.Win32命名空间。