From b5234c5ab1e9e6826b8d8fc1e95fa752aaa40b74 Mon Sep 17 00:00:00 2001 From: chr <chr@mailcom> Date: 星期六, 02 十一月 2024 10:56:50 +0800 Subject: [PATCH] 优化程序 --- PdmSwPlugin.Main/SwAddIn/MainControl.cs | 82 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 81 insertions(+), 1 deletions(-) diff --git a/PdmSwPlugin.Main/SwAddIn/MainControl.cs b/PdmSwPlugin.Main/SwAddIn/MainControl.cs index 36758e6..6b1208c 100644 --- a/PdmSwPlugin.Main/SwAddIn/MainControl.cs +++ b/PdmSwPlugin.Main/SwAddIn/MainControl.cs @@ -17,6 +17,9 @@ using PdmSwPlugin.MaterialSelect; using PdmSwPlugin.PriceCheck; using PdmSwPlugin.Common.Setting; +using Microsoft.Win32; +using System.IO; +using System.Diagnostics; namespace PdmSwPlugin.Main { @@ -28,7 +31,7 @@ { public SldWorks SwApp { get; private set; } - private ILog Logger = LogManager.GetLogger("Main"); + private ILog Logger; private PluginSetting GlobalConfig; private string[] plugins = { @@ -55,11 +58,88 @@ public MainControl(SldWorks swAddin) { + var log = LogManager.GetLogger("Main"); + Logger = log; SwApp = swAddin; GlobalConfig = PluginSetting.Instance; InitializeComponent(); self.DataContext = this; InitTcpServer(); + try + { + CheckAutoRunRegKey(); + StartListenerProcess(); + } + catch (Exception e) + { + log.Error("Start Listener Error!", e); + } + } + + /// <summary> + /// 璁剧疆鐩戝惉鍣ㄨ嚜鍚姩 + /// </summary> + private void CheckAutoRunRegKey() + { + RegistryKey root = null; + RegistryKey key = null; + try + { + root = Registry.CurrentUser; + key = root.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true); + string name = "SolidWorksListener"; + if (key == null) + { + key = root.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"); + } + // 娌℃湁璺緞鎴栬�呰矾寰勬寚鍚慹xe涓嶅锛屽氨鏇存柊鑷惎鍔ㄨ矾寰� + string listenerPath = key.GetValue(name)?.ToString(); + string rootDir = new DirectoryInfo(Assembly.GetExecutingAssembly().Location).Parent.FullName; + string newPath = Path.Combine(rootDir, "Listener", "SolidWorksListener.exe"); + if (string.IsNullOrEmpty(listenerPath) || new Uri(listenerPath) != new Uri(newPath)) + { + key.SetValue(name, newPath, RegistryValueKind.String); + } + + } + catch (Exception e) + { + Logger.Error("CheckAutoRunRegKey Failed!", e); + } + finally + { + try + { + if (key != null) key.Close(); + if (root != null) root.Close(); + } + catch (Exception ex) + { + Logger.Error("Reg Key Close Failed!", ex); + } + } + } + + /// <summary> + /// 鍚姩Listener鐩稿叧杩涚▼ + /// </summary> + public void StartListenerProcess() + { + string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + string path1 = Path.Combine(dir, "Listener", "SolidWorksListener.exe"); + if (File.Exists(path1)) + { + ProcessStartInfo info = new ProcessStartInfo + { + FileName = path1, + WorkingDirectory = Path.GetDirectoryName(path1) + }; + + new Process + { + StartInfo = info + }.Start(); + } } // 鏈湴璋冭瘯鐢紝杩炴帴SolidWorks -- Gitblit v1.9.1