明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9707|回复: 18

[运行时] .Net程序自动加载管理器

  [复制链接]
发表于 2009-8-25 13:34 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-9-3 9:38:17 编辑


2009/9/3
Ver1.0(.Net Framework 2.0)
1、初始化文件更改为读写注册表
2、加入重新载入功能,以防注册表信息误删除
3、双击可运行命令(测试功能)
2009/8/30
放弃运行命令的功能,没有实用价值
界面基本完善,添加程序集启动方式的选择
2009/8/29
1、命令文件改用二进制文件存储
2、提供简化的通讯录管理程序测试
3、注意,程序初次运行应将Assx文件删除
4、去除一些Bug
2009/8/28
1、归并数据文件
2、去除Ass文件的多余属性
2009/8/27试用版本
功能改进:
1、完善管理界面
2、加入被管理程序的命令帮助的功能
3、管理界面添加程序时,直接导入程序
注意,程序运行过程中会在被管理文件的同目录生成一些ass/assx/cmds文件,请勿删
正式版本会把这些文件归并到同一目录
后期考虑直接从界面运行命令
简化的版本,开源:)

运行效果:
1、第一次netload加载该程序
  1. 加载自定义文件成功。自定义组: ACAD
  2. 加载自定义文件成功。自定义组: CUSTOM
  3. 加载自定义文件成功。自定义组: EXPRESS
  4. 正在重生成模型。
  5. AutoCAD Express Tools Copyright ?2002-2004 Autodesk, Inc.
  6. AutoCAD 菜单实用程序已加载。
  7. 命令: COMMANDLINE
  8. 命令: netload
  9. NetAutoLoad 已加载!
  10. 检查注册表......
  11. 未发现NetAutoLoad的自动加载项,重新载入......
  12. 自动加载项设置成功!
  13. 检查序列化文件......OK!
  14. 检查注册表加载项......
  15. TlsCad(TlsCad 0.2 For AutoCad)未正确注册!......OK!
  16. TlsCad Load!
  17. TlsAddressList(TlsAddressList 1.0 For AutoCad)未正确注册!......OK!
复制代码
2、以后运行,程序及被管理项会在AutoCad启动时加载
  1. 加载自定义文件成功。自定义组: ACAD
  2. 加载自定义文件成功。自定义组: CUSTOM
  3. 加载自定义文件成功。自定义组: EXPRESS
  4. 正在重生成模型。
  5. NetAutoLoad 已加载!
  6. 检查注册表......OK!
  7. 检查序列化文件......OK!
  8. 检查注册表加载项......
  9. TlsCad(TlsCad 0.2 For AutoCad)已注册!
  10. TlsAddressList(TlsAddressList 1.0 For AutoCad)已注册!
  11. TlsCad Load!
  12. AutoCAD Express Tools Copyright ?2002-2004 Autodesk, Inc.
  13. AutoCAD 菜单实用程序已加载。
  14. 命令: COMMANDLINE
复制代码
3、后期将加入管理界面,简化序列化文件的输入,可能加入被管理程序的命令帮助的功能:)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1威望 +2 明经币 +2 金钱 +20 贡献 +5 激情 +5 收起 理由
mccad + 2 + 2 + 20 + 5 + 5 【精华】好程序

查看全部评分

发表于 2018-8-13 20:54 | 显示全部楼层
你好如何使用工具
 楼主| 发表于 2009-8-25 13:35 | 显示全部楼层
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Xml.Serialization;
  5. using System.IO;
  6. using System.Collections;
  7. using Microsoft.Win32;
  8. using Autodesk.AutoCAD.DatabaseServices;
  9. namespace TlsCad.NetAutoLoad
  10. {
  11.     [Serializable]
  12.     public class Module
  13.     {
  14.         public string Name;
  15.         public string Location;
  16.         public bool Load;
  17.         public long Loadctrls;
  18.         public string Description;
  19. &#160;&#160;&#160;&#160;&#160;&#160;&#160; private static List<string> _regApps;
  20. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public Module() { }
  21. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public Module(string name, string location, bool load,int loadctrls, string description)
  22. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  23. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Name = name;
  24. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Location = location;
  25. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Load = load;
  26. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Loadctrls = loadctrls;
  27. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Description = description;
  28. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  29. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public bool SearchForReg()
  30. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  31. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (_regApps == null)
  32. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  33. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RegistryKey appkey = GetAcAppKey(false);
  34. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _regApps = new List<string>(appkey.GetSubKeyNames());
  35. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; appkey.Close();
  36. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  37. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return _regApps.Contains(Name);
  38. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  39. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public void RegApp()
  40. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  41. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RegistryKey appkey = GetAcAppKey(true);
  42. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RegistryKey rk = appkey.CreateSubKey(Name);
  43. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; rk.SetValue("DESCRIPTION", Name, RegistryValueKind.String);
  44. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; rk.SetValue("LOADCTRLS", Loadctrls, RegistryValueKind.DWord);
  45. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; rk.SetValue("LOADER", Location, RegistryValueKind.String);
  46. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; rk.SetValue("MANAGED", 1, RegistryValueKind.DWord);
  47. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; appkey.Close();
  48. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  49. &#160;&#160;&#160;&#160;&#160;&#160;&#160; private RegistryKey GetAcAppKey(bool writable)
  50. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  51. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RegistryKey ackey =
  52. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Registry.CurrentUser.OpenSubKey(
  53. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; HostApplicationServices.Current.RegistryProductRootKey);
  54. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return ackey.OpenSubKey("Applications", writable);
  55. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  56. &#160;&#160;&#160; }
  57. &#160;&#160;&#160; public class ModuleCollection : ICollection
  58. &#160;&#160;&#160; {
  59. &#160;&#160;&#160;&#160;&#160;&#160;&#160; private List<Module> lst = new List<Module>();
  60. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public Module this[int id]
  61. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  62. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; get { return (Module)lst[id]; }
  63. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  64. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public void Add(Module mod)
  65. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  66. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; lst.Add(mod);
  67. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  68. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public void Remove(Module mod)
  69. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  70. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; lst.Remove(mod);
  71. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  72. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public void WriteXml(string path)
  73. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  74. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try
  75. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  76. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; XmlSerializer xs = new XmlSerializer(typeof(ModuleCollection));
  77. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; StreamWriter sw = new StreamWriter(path);
  78. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; xs.Serialize(sw, this);
  79. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; sw.Close();
  80. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  81. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch
  82. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { }
  83. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  84. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public void ReadXml(string path)
  85. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  86. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try
  87. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  88. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; XmlSerializer xs = new XmlSerializer(typeof(Module[]));
  89. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; StreamReader sr = new StreamReader(path);
  90. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Module[] ps = ((Module[])xs.Deserialize(sr));
  91. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; sr.Close();
  92. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (int i = 0; i < ps.Length; Add(ps[i++])) ;
  93. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  94. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch
  95. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { }
  96. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  97. &#160;&#160;&#160;&#160;&#160;&#160;&#160; #region ICollection 成员
  98. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public void CopyTo(Array array, int index)
  99. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  100. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; lst.CopyTo((Module[])array, index);
  101. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  102. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public int Count
  103. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  104. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; get { return lst.Count; }
  105. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  106. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public bool IsSynchronized
  107. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  108. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; get { return false; }
  109. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  110. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public object SyncRoot
  111. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  112. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; get { return this; }
  113. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  114. &#160;&#160;&#160;&#160;&#160;&#160;&#160; #endregion
  115. &#160;&#160;&#160;&#160;&#160;&#160;&#160; #region IEnumerable 成员
  116. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public IEnumerator GetEnumerator()
  117. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  118. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return lst.GetEnumerator();
  119. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  120. &#160;&#160;&#160;&#160;&#160;&#160;&#160; #endregion
  121. &#160;&#160;&#160; }
  122. }
 楼主| 发表于 2009-8-25 13:35 | 显示全部楼层
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Reflection;
  5. namespace TlsCad.NetAutoLoad
  6. {
  7. &#160;&#160;&#160; class MyArx
  8. &#160;&#160;&#160; {
  9. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public static Assembly CurAssembly
  10. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  11. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; get { return (new MyArx()).GetType().Assembly; }
  12. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  13. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public static string Location
  14. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  15. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; get { return CurAssembly.Location; }
  16. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  17. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public static string MainPath
  18. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  19. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; get
  20. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  21. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string s = Location;
  22. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return s.Substring(0, s.LastIndexOf("\"));
  23. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  24. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  25. &#160;&#160;&#160; }
  26. }
 楼主| 发表于 2009-8-25 13:36 | 显示全部楼层
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.IO;
  5. using System.Reflection;
  6. using Microsoft.Win32;
  7. using Autodesk.AutoCAD.Runtime;
  8. using Autodesk.AutoCAD.ApplicationServices;
  9. using Autodesk.AutoCAD.DatabaseServices;
  10. using Autodesk.AutoCAD.EditorInput;
  11. [assembly: ExtensionApplication(typeof(TlsCad.NetAutoLoad.TlsApplication))]
  12. namespace TlsCad.NetAutoLoad
  13. {
  14. &#160;&#160;&#160; public class TlsApplication : IExtensionApplication
  15. &#160;&#160;&#160; {
  16. &#160;&#160;&#160;&#160;&#160;&#160;&#160; #region IExtensionApplication 成员
  17. &#160;&#160;&#160;&#160;&#160;&#160;&#160; private static ModuleCollection _modules = new ModuleCollection();
  18. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public void Initialize()
  19. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  20. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  21. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("\nNetAutoLoad 已加载!");
  22. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //查找注册表键值
  23. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("\n\n检查注册表......");
  24. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Module module = new Module(
  25. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; "NetAutoLoad",
  26. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; MyArx.Location,
  27. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; false,
  28. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2,
  29. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; "NetApi Manger For AutoCad");
  30. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (module.SearchForReg())
  31. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  32. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("OK!");
  33. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  34. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else
  35. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  36. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("\n未发现NetAutoLoad的自动加载项,重新载入......");
  37. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; module.RegApp();
  38. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("\n自动加载项设置成功!");
  39. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  40. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; DirectoryInfo di = new DirectoryInfo(MyArx.MainPath);
  41. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //查找序列化文件
  42. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("\n\n检查序列化文件......");
  43. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (di.GetFiles("NetAutoLoad.xml").Length == 0)
  44. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  45. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("\n未发现序列化文件,重新生成......");
  46. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ModuleCollection modules = new ModuleCollection();
  47. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; modules.Add(module);
  48. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; modules.WriteXml(MyArx.MainPath + "\\NetAutoLoad.xml");
  49. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("OK!");
  50. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  51. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else
  52. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  53. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("OK!");
  54. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  55. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //检查加载项
  56. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("\n\n检查注册表加载项......");
  57. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _modules.ReadXml(MyArx.MainPath + "\\NetAutoLoad.xml");
  58. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (Module mod in _modules)
  59. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  60. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (mod.Load)
  61. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  62. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (!mod.SearchForReg())
  63. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  64. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("\n{0}({1})未正确注册!......", mod.Name, mod.Description);
  65. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mod.RegApp();
  66. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("OK!");
  67. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Assembly.LoadFrom(mod.Location);
  68. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  69. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else
  70. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  71. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("\n{0}({1})已注册!", mod.Name, mod.Description);
  72. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  73. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  74. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  75. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ed.WriteMessage("\n");
  76. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  77. &#160;&#160;&#160;&#160;&#160;&#160;&#160; public void Terminate()
  78. &#160;&#160;&#160;&#160;&#160;&#160;&#160; {
  79. &#160;&#160;&#160;&#160;&#160;&#160;&#160; }
  80. &#160;&#160;&#160;&#160;&#160;&#160;&#160; #endregion
  81. &#160;&#160;&#160; }
  82. }
 楼主| 发表于 2009-8-26 15:24 | 显示全部楼层
本帖最后由 作者 于 2009-8-27 23:16:55 编辑

  1. 命令: nal:c
  2. ++++++++++++++++++++++++++++++++++++
  3. 程序集名称:NetAutoLoad
  4.   路径:D:\TlsCad\Bin\NetAutoLoad.dll
  5.   说明:
  6.     .Net Assembly Manger For AutoCad
  7.     Writer:xsfhlzh
  8.     How to:
  9.     1.第一次运行时,命令行加载;
  10.     2.下次运行时程序将自动加载.
  11.     命令名:Nal:C,Nal:C
  12.       函数名:ShowCmds
  13.     命令名:Nal:M,Nal:M
  14.       函数名:Mange
  15.     命令名:Nal:U,Nal:U
  16.       函数名:UnReg
  17. ++++++++++++++++++++++++++++++++++++
  18. 程序集名称:TlsCad
  19.   路径:D:\TlsCad\Bin\TlsCad.dll
  20.   说明:
  21.     TlsCad 0.2 For AutoCad
  22.     Writer:xsfhlzh
  23.     命令名:CCicByDb,CCicByDb
  24.       函数名:CCicByDb
  25.     命令名:CCirByGe,CCirByGe
  26.       函数名:CCirByGe
  27.     命令名:CTest,CTest
  28.       函数名:test
  29.     命令名:ee,ee
  30.       函数名:RussiaSquareEnd
  31.     命令名:ht,ht
  32.       函数名:HatchLoop
  33.     命令名:lj,lj
  34.       函数名:DoIt
  35.     命令名:plj,plj
  36.       函数名:DoIt
  37.     命令名:ss,ss
  38.       函数名:RussiaSquareStart
  39.     命令名:t1,t1
  40.       函数名:Test1
  41.     命令名:t2,t2
  42.       函数名:Test2
  43.     命令名:t3,t3
  44.       函数名:Test3
  45.     命令名:t4,t4
  46.       函数名:Test4
  47.     命令名:t5,t5
  48.       函数名:Test5
  49.     命令名:t8,t8
  50.       函数名:Test8
  51.     命令名:t9,t9
  52.       函数名:Test9
  53.     命令名:Tls:BAC,Tls:BAC
  54.       函数名:BreakAllCurve
  55.     命令名:Tls:DP,Tls:DP
  56.       函数名:DisplayProperties
  57.     命令名:Tls:PI,Tls:PI
  58.       函数名:PartInsert
  59.     命令名:Tls:PP,Tls:PP
  60.       函数名:Test3
  61.     命令名:TT,TT
  62.       函数名:Test
复制代码
 楼主| 发表于 2009-8-30 10:30 | 显示全部楼层
本帖最后由 作者 于 2009-8-30 10:51:29 编辑

  1. 命令: nal:c
  2. NetAutoLoad 已加载!
  3. 检查注册表......OK!
  4. 检查初始化文件......OK!
  5. 检查注册表加载项......
  6. --------------------------------------
  7. NetAutoLoad已注册!
  8.       "D:\TlsCad\Bin\NetAutoLoad.dll"
  9. --------------------------------------
  10. TlsAddressList已注册!
  11.       "D:\TlsCad\Bin\TlsAddressList.dll"
  12. --------------------------------------
  13. TlsBasal已注册!
  14.       "D:\TlsCad\Bin\TlsBasal.dll"
  15. --------------------------------------
  16. ++++++++++++++++++++++++++++++++++++
  17. 程序集名称:NetAutoLoad
  18.   路径:D:\TlsCad\Bin\NetAutoLoad.dll
  19.   说明:
  20.     .Net Assembly Manger For AutoCad
  21.     Writer:xsfhlzh
  22.     How to:
  23.     1.第一次运行时,用NetLoad命令加载;
  24.     2.下次运行时程序将自动加载.
  25.     注意:
  26.     1.Ass是命令列表文件,包含程序说明和命令说明,可覆盖.
  27.     2.Assx文件是程序初始化文件,包含程序列表,不可覆盖.
  28.     3.添加程序集不要在Assx文件中手动加载,必要时可删除该文件.
  29.     ****************************
  30.     命令名:Nal:C,Nal:C
  31.       模块名:NetAutoLoad.dll
  32.       类型名:TlsCad.NetAutoLoad.TlsMain
  33.       函数名:ShowCmds
  34.         说明:
  35.         命令行显示命令列表
  36.     ****************************
  37.     命令名:Nal:M,Nal:M
  38.       模块名:NetAutoLoad.dll
  39.       类型名:TlsCad.NetAutoLoad.TlsMain
  40.       函数名:Mange
  41.         说明:
  42.         1.添加/删除程序集
  43.         2.设置程序集启动方式
  44.         3.为命令添加帮助
  45.     ****************************
  46.     命令名:Nal:U,Nal:U
  47.       模块名:NetAutoLoad.dll
  48.       类型名:TlsCad.NetAutoLoad.TlsMain
  49.       函数名:UnReg
  50.         说明:
  51.         程序卸载
  52.     ****************************
  53. ++++++++++++++++++++++++++++++++++++
  54. 程序集名称:TlsAddressList
  55.   路径:D:\TlsCad\Bin\TlsAddressList.dll
  56.   说明:
  57.     TlsAddressList For AutoCad
  58.     Writer:xsfhlzh
  59.     通讯录管理
  60.     ****************************
  61.     命令名:tls:als,tls:als
  62.       模块名:TlsAddressList.dll
  63.       类型名:TlsAddressList.TlsMain
  64.       函数名:ShowAddressList
  65.         说明:
  66.         显示通讯录管理界面
  67.     ****************************
  68. ++++++++++++++++++++++++++++++++++++
  69. 程序集名称:TlsBasal
  70.   路径:D:\TlsCad\Bin\TlsBasal.dll
  71.   说明:
  72.     TlsBasal For AutoCad
  73.     Writer:xsfhlzh
  74.     TlsCad基本类库
  75.     ****************************
  76. ++++++++++++++++++++++++++++++++++++
复制代码
 楼主| 发表于 2009-9-3 09:47 | 显示全部楼层

1.0正式版本,短时间内应该不会更新了:)

发表于 2009-12-26 15:35 | 显示全部楼层
收到顶起来。
发表于 2009-12-27 12:21 | 显示全部楼层

顶起来

发表于 2010-4-15 09:55 | 显示全部楼层
強大.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-9 00:21 , Processed in 0.229905 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表