public static void SaveWindowPlacement(FormMain form, string path)
        {
            try {
                string parent = Directory.GetParent(path).FullName;
                if (!Directory.Exists(parent))
                {
                    Directory.CreateDirectory(parent);
                }


                var wp = new WindowPlacementWrapper();



                GetWindowPlacement(form.Handle, out wp.RawData);


                string settings = DynamicJson.Serialize(wp);

                using (StreamWriter sw = new StreamWriter(path)) {
                    sw.Write(settings);
                }
            } catch (Exception ex) {
                Utility.ErrorReporter.SendErrorReport(ex, LoggerRes.FailedSaveWindowPlacement);
            }
        }
        public static void LoadWindowPlacement(FormMain form, string path)
        {
            try {
                if (File.Exists(path))
                {
                    string settings;

                    using (StreamReader sr = new StreamReader(path)) {
                        settings = sr.ReadToEnd();
                    }


                    WindowPlacementWrapper wp = DynamicJson.Parse(settings);

                    if (wp.RawData.showCmd == SW.SHOWMINIMIZED)
                    {
                        wp.RawData.showCmd = SW.SHOWNORMAL;
                    }

                    SetWindowPlacement(form.Handle, ref wp.RawData);
                }
            } catch (Exception ex) {
                Utility.ErrorReporter.SendErrorReport(ex, LoggerRes.FailedLoadWindowPlacement);
            }
        }
        public static void SaveWindowPlacement(FormMain form, Stream stream)
        {
            try {
                var wp = new WindowPlacementWrapper();

                GetWindowPlacement(form.Handle, out wp.RawData);

                wp.Save(stream);
            } catch (Exception ex) {
                Utility.ErrorReporter.SendErrorReport(ex, LoggerRes.FailedSaveWindowPlacement);
            }
        }
        public static void LoadWindowPlacement( FormMain form, Stream stream )
        {
            try {
                var wp = new WindowPlacementWrapper();
                wp = (WindowPlacementWrapper)wp.Load( stream );

                if ( wp.RawData.showCmd == SW.SHOWMINIMIZED )
                    wp.RawData.showCmd = SW.SHOWNORMAL;

                SetWindowPlacement( form.Handle, ref wp.RawData );

            } catch ( Exception ex ) {

                Utility.ErrorReporter.SendErrorReport( ex, LoggerRes.FailedLoadWindowPlacement );
            }
        }
        public static void LoadWindowPlacement(FormMain form, Stream stream)
        {
            try {
                var wp = new WindowPlacementWrapper();
                wp = (WindowPlacementWrapper)wp.Load(stream);

                if (wp.RawData.showCmd == SW.SHOWMINIMIZED)
                {
                    wp.RawData.showCmd = SW.SHOWNORMAL;
                }

                SetWindowPlacement(form.Handle, ref wp.RawData);
            } catch (Exception ex) {
                Utility.ErrorReporter.SendErrorReport(ex, LoggerRes.FailedLoadWindowPlacement);
            }
        }
        public static void SaveWindowPlacement( FormMain form, Stream stream )
        {
            try {
                var wp = new WindowPlacementWrapper();

                GetWindowPlacement( form.Handle, out wp.RawData );

                wp.Save( stream );

            } catch ( Exception ex ) {

                Utility.ErrorReporter.SendErrorReport( ex, LoggerRes.FailedSaveWindowPlacement );
            }
        }
        public static void SaveWindowPlacement( FormMain form, string path )
        {
            try {

                string parent = Directory.GetParent( path ).FullName;
                if ( !Directory.Exists( parent ) ) {
                    Directory.CreateDirectory( parent );
                }

                var wp = new WindowPlacementWrapper();

                GetWindowPlacement( form.Handle, out wp.RawData );

                string settings = DynamicJson.Serialize( wp );

                using ( StreamWriter sw = new StreamWriter( path ) ) {

                    sw.Write( settings );

                }

            } catch ( Exception ex ) {

                Utility.ErrorReporter.SendErrorReport( ex, LoggerRes.FailedSaveWindowPlacement );
            }
        }