using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace IMCS.Device.HeiDenHainBase { public static class MyHelper { #region "public static methods" public static string CheckDncVersion(int mayor = 0, int minor = 0, int revision = 0, int build = 0) { int[] requiredVersion = new int[] { mayor, minor, revision, build }; int[] installedVersion = null; string strVersionComInterface = null; HeidenhainDNCLib.JHMachine machine = null; try { machine = new HeidenhainDNCLib.JHMachine(); strVersionComInterface = machine.GetVersionComInterface(); if (strVersionComInterface.Contains(".")) installedVersion = strVersionComInterface.Split('.').Select(n => Convert.ToInt32(n)).ToArray(); else installedVersion = strVersionComInterface.Split(',').Select(n => Convert.ToInt32(n)).ToArray(); // check if installed COM component meets minimum application requirement if (!CheckVersion(requiredVersion, installedVersion)) { string strRequiredVersionComInterface = requiredVersion[0] + "." + requiredVersion[1] + "." + requiredVersion[2] + "." + requiredVersion[3]; string strInstalledVersionComInterface = installedVersion[0] + "." + installedVersion[1] + "." + installedVersion[2] + "." + installedVersion[3]; // --- close application, because HeidenhainDNC version dos not meer minimum application requirement MessageBox.Show( "Your HeidenhainDNC version does not meet minimum application requirement!" + Environment.NewLine + Environment.NewLine + "Installed version\t: " + strInstalledVersionComInterface + Environment.NewLine + "Required version\t: " + strRequiredVersionComInterface + Environment.NewLine + Environment.NewLine + "The application has to be closed." + Environment.NewLine, "Verify HeidenhainDNC version", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); } } catch (COMException) { // --- close application, because can't use HeidenhainDNC COM component (reinstall ?) MessageBox.Show( "Can't use HeidenhainDNC COM interface!" + Environment.NewLine + "The application has to be closed." + Environment.NewLine + "Please reinstall HeidenhainDNC.", "Verify HeidenhainDNC version", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); } catch (Exception) { // --- something went wrong by verifying HeidenhainDNC version -------- DialogResult dr; dr = MessageBox.Show( "Problem verifying HeidenhainDNC version!" + Environment.NewLine + "Possibly the application can't be executed properly." + Environment.NewLine + "Do you want to proceed anyway?" + Environment.NewLine, "Verify HeidenhainDNC version", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == System.Windows.Forms.DialogResult.No) Application.Exit(); } finally { if (machine != null) Marshal.ReleaseComObject(machine); } return strVersionComInterface; } public static void ShowComException(int ErrorCode, string ClassName = null, string MethodName = null) { // --- build caption for COM exception message box ---------------------- string strMessageBoxCaption = "COM Exception"; if (!String.IsNullOrEmpty(ClassName) && !String.IsNullOrEmpty(MethodName)) strMessageBoxCaption = ClassName + " --> " + MethodName; // --- build text for COM exception message box ------------------------- string strExceptionMessage = "HRESULT: 0x" + Convert.ToString(ErrorCode, 16) + Environment.NewLine; HeidenhainDNCLib.DNC_HRESULT hr = (HeidenhainDNCLib.DNC_HRESULT)ErrorCode; strExceptionMessage += Enum.GetName(typeof(HeidenhainDNCLib.DNC_HRESULT), hr); // --- show message box ------------------------------------------------- MessageBox.Show(strExceptionMessage, strMessageBoxCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); } public static void ShowException(Exception ex, string ClassName = null, string MethodName = null) { // --- build caption for COM exception message box ---------------------- string strMessageBoxCaption = "Exception"; if (!String.IsNullOrEmpty(ClassName) && !String.IsNullOrEmpty(MethodName)) strMessageBoxCaption = ClassName + " --> " + MethodName; // --- build text for COM exception message box ------------------------- string strExceptionMessage = ".NET Exception:" + Environment.NewLine + ex.Message + Environment.NewLine; // --- show message box ------------------------------------------------- MessageBox.Show(strExceptionMessage, strMessageBoxCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); } #endregion #region "private static methods" private static bool CheckVersion(int[] requiredVersion, int[] installedVersion) { if (requiredVersion.Length != 4 || installedVersion.Length != 4) throw (new Exception()); for (int i = 0; i < installedVersion.Length; i++) { if (installedVersion[i] > requiredVersion[i]) break; if (installedVersion[i] == requiredVersion[i]) continue; return false; } return true; } #endregion } public class MyDirectoryEntry { public string Name { get; set; } public DateTime TimeStamp { get; set; } public double FileSize { get; set; } // directory entry attributes public bool ReadOnly { get; set; } public bool Hidden { get; set; } public bool Dir { get; set; } public bool System { get; set; } public bool Modified { get; set; } public bool Locked { get; set; } } }