From 5892c195ed05dbc650095d19228e77fe223301fd Mon Sep 17 00:00:00 2001 From: Smurf-iv Date: Tue, 20 Dec 2022 10:30:01 +0000 Subject: [PATCH] - Change the to have "no default" option for `Scrub` - Update nuget packages - Switch to "canary" Krypton dlls to use the "No Close" button - Fix fallout for Krypton Usage - Ensure Dll Search paths" are locked down - Add icon to the log view - Correct some compiler warnings - Update (c) year in altered files #85 --- Elucidate/Elucidate/CmdLine/ScrubVerb.cs | 4 +- .../DataGridViewTripleValueBarColumn.cs | 33 ++- .../Elucidate/Controls/LogsViewerControl.cs | 9 +- Elucidate/Elucidate/Controls/RunControl.cs | 6 +- Elucidate/Elucidate/Elucidate.csproj | 18 +- .../Elucidate/Forms/CalculateBlockSize.cs | 4 +- Elucidate/Elucidate/Forms/ElucidateForm.cs | 6 +- Elucidate/Elucidate/Forms/LiveLog.Designer.cs | 3 + Elucidate/Elucidate/Forms/LiveLog.resx | 257 ++++++++++++++++++ Elucidate/Elucidate/Forms/Settings.cs | 16 +- .../HelperClasses/ConfigFileHelper.cs | 9 +- .../Elucidate/HelperClasses/StorageUtil.cs | 9 +- Elucidate/Elucidate/HelperClasses/Util.cs | 5 +- Elucidate/Elucidate/Program.cs | 4 +- .../Elucidate/Properties/AssemblyInfo.cs | 6 +- .../Elucidate/Shared/BufferedTreeView.cs | 1 + .../Elucidate/Shared/FolderSelectDialog.cs | 1 + Elucidate/Elucidate/Shared/WaitCursor.cs | 2 + .../Elucidate/TabPages/CommonTab.Designer.cs | 2 +- Elucidate/Elucidate/TabPages/Schedule.cs | 4 +- .../wyDay.Controls/Windows7Taskbar.cs | 1 + 21 files changed, 345 insertions(+), 55 deletions(-) diff --git a/Elucidate/Elucidate/CmdLine/ScrubVerb.cs b/Elucidate/Elucidate/CmdLine/ScrubVerb.cs index 3aee302..039fcaa 100644 --- a/Elucidate/Elucidate/CmdLine/ScrubVerb.cs +++ b/Elucidate/Elucidate/CmdLine/ScrubVerb.cs @@ -2,7 +2,7 @@ // --------------------------------------------------------------------------------------------------------------- // // -// Copyright (C) 2018 Simon Coghlan (Aka Smurf-IV) +// Copyright (C) 2018-2022 Simon Coghlan (Aka Smurf-IV) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ namespace Elucidate.CmdLine { - [Verb("scrub", HelpText = "Defaults to 100% (-p100) of all of blocks (older than 0 days = -o0).\r\nBlocks alre" + + [Verb("scrub", HelpText = "Defaults to 8% of all of blocks (oldest unchecked first).\r\nBlocks alre" + "ady marked as bad are always checked.\r\nUse \"Additional Command\" to override the " + "default of 100% of 0 days")] internal class ScrubVerb : StdOptions diff --git a/Elucidate/Elucidate/Controls/DataGridViewTripleValueBarColumn.cs b/Elucidate/Elucidate/Controls/DataGridViewTripleValueBarColumn.cs index 48f9273..c136e94 100644 --- a/Elucidate/Elucidate/Controls/DataGridViewTripleValueBarColumn.cs +++ b/Elucidate/Elucidate/Controls/DataGridViewTripleValueBarColumn.cs @@ -1,4 +1,30 @@ -using System.ComponentModel; +#region Copyright (C) +// --------------------------------------------------------------------------------------------------------------- +// +// +// Copyright (C) 2019-2022 Simon Coghlan (Aka Smurf-IV) +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. +// +// +// Url: https://github.com/Smurf-IV/Elucidate +// Email: https://github.com/Smurf-IV +// +// -------------------------------------------------------------------------------------------------------------------- +#endregion + +using System.ComponentModel; using System.Drawing; using System.Windows.Forms; @@ -52,6 +78,11 @@ protected override void Paint(Graphics g, Rectangle clipBounds, Rectangle cellBo float.TryParse(values[1], out var mid); float.TryParse(values[2], out var max); + if (max <= 0) + { + return; + } + var lowPercent = low / max; var midPercent = mid / max; // Draws the cell grid diff --git a/Elucidate/Elucidate/Controls/LogsViewerControl.cs b/Elucidate/Elucidate/Controls/LogsViewerControl.cs index dca3f56..3405806 100644 --- a/Elucidate/Elucidate/Controls/LogsViewerControl.cs +++ b/Elucidate/Elucidate/Controls/LogsViewerControl.cs @@ -2,7 +2,7 @@ // --------------------------------------------------------------------------------------------------------------- // // -// Copyright (C) 2018-2021 Simon Coghlan (Aka Smurf-IV) & BlueBlock 2018 +// Copyright (C) 2018-2022 Simon Coghlan (Aka Smurf-IV) & BlueBlock 2018 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -41,13 +41,9 @@ public partial class LogsViewerControl : UserControl private static readonly Logger Log = LogManager.GetCurrentClassLogger(); public enum LexerNameEnum { ScanRaid, NLog } - public LexerNameEnum LexerToUse { get; set; } = LexerNameEnum.NLog; private readonly FileSystemWatcher logFileWatcher = new(); - - private string selectedDirectoryTitle; - private readonly string snapraidErrorSearchTerm = @"error: "; private readonly string snapraidWarningSearchTerm = @"WARNING"; private readonly string elucidateErrorSearchTerm = @"] ERROR "; @@ -104,7 +100,8 @@ private void UpdateLogFileList(string selectedDirectoryTitle = null) } else { - this.selectedDirectoryTitle = selectedDirectoryTitle; + // TODO: + //this.selectedDirectoryTitle = selectedDirectoryTitle; } string errorSearchTerm; diff --git a/Elucidate/Elucidate/Controls/RunControl.cs b/Elucidate/Elucidate/Controls/RunControl.cs index 0b305ca..a173eeb 100644 --- a/Elucidate/Elucidate/Controls/RunControl.cs +++ b/Elucidate/Elucidate/Controls/RunControl.cs @@ -1,7 +1,7 @@ #region Copyright (C) // // -// Copyright (C) 2018-2021 Smurf-IV & BlueBlock 2018 +// Copyright (C) 2018-2022 Smurf-IV & BlueBlock 2018 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -168,7 +168,6 @@ internal void StartSnapRaidProcess(CommandType commandToRun, Stack paths break; case CommandType.Scrub: command.Append(@"scrub"); - defaultOption = @" -p100 -o0"; break; case CommandType.Fix: command.Append(@"fix"); @@ -650,12 +649,15 @@ private enum ThreadAccess } [DllImport(@"kernel32.dll")] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] private static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId); [DllImport(@"kernel32.dll")] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] private static extern uint SuspendThread(IntPtr hThread); [DllImport("kernel32.dll")] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] private static extern int ResumeThread(IntPtr hThread); public static void Suspend(this Process process) diff --git a/Elucidate/Elucidate/Elucidate.csproj b/Elucidate/Elucidate/Elucidate.csproj index fca7d09..5688e9b 100644 --- a/Elucidate/Elucidate/Elucidate.csproj +++ b/Elucidate/Elucidate/Elucidate.csproj @@ -1,6 +1,6 @@  - + net48 WinExe Elucidate @@ -39,22 +39,18 @@ 2.1.1 - 2.8.0 + 2.9.1 - 4.6.2 + 4.8.0 - 4.6.2 - - - 6.2111.312 - - - 6.2111.312 + 4.8.0 + + - 4.7.13 + 4.7.15 diff --git a/Elucidate/Elucidate/Forms/CalculateBlockSize.cs b/Elucidate/Elucidate/Forms/CalculateBlockSize.cs index 9e10150..c2316be 100644 --- a/Elucidate/Elucidate/Forms/CalculateBlockSize.cs +++ b/Elucidate/Elucidate/Forms/CalculateBlockSize.cs @@ -2,7 +2,7 @@ // --------------------------------------------------------------------------------------------------------------- // // -// Copyright (C) 2010-2021 Simon Coghlan (Aka Smurf-IV) +// Copyright (C) 2010-2022 Simon Coghlan (Aka Smurf-IV) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -109,7 +109,7 @@ private static string FindNextPow2(ulong val) private static void FindAndAddDisplaySizes(string path, ref ulong min, ref ulong max) { // ReSharper disable once UnusedVariable - Util.SourcePathFreeBytesAvailable(path, out var freeBytesAvailable, out var pathUsedBytes, out var rootBytesNotCoveredByPath); + Util.SourcePathFreeBytesAvailable(path, out var freeBytesAvailable, out var pathUsedBytes, out var _); min += pathUsedBytes; max += pathUsedBytes; diff --git a/Elucidate/Elucidate/Forms/ElucidateForm.cs b/Elucidate/Elucidate/Forms/ElucidateForm.cs index 45077ca..3e03bfb 100644 --- a/Elucidate/Elucidate/Forms/ElucidateForm.cs +++ b/Elucidate/Elucidate/Forms/ElucidateForm.cs @@ -2,7 +2,7 @@ // --------------------------------------------------------------------------------------------------------------- // // -// Copyright (C) 2010-2021 Simon Coghlan (Aka Smurf-IV) +// Copyright (C) 2010-2022 Simon Coghlan (Aka Smurf-IV) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -117,7 +117,7 @@ private void ElucidateForm_Shown(object sender, EventArgs e) $"There are warnings for the configuration file:{Environment.NewLine} - {string.Join(" - ", srConfig.ConfigWarnings)}", "Configuration File Warnings", MessageBoxButtons.OK, - MessageBoxIcon.Warning); + KryptonMessageBoxIcon.Warning); } else { @@ -208,7 +208,7 @@ private void deleteAllSnapRAIDRaidFilesToolStripMenuItem_Click(object sender, Ev sb.ToString(), @"Delete All SnapRAID Files", MessageBoxButtons.YesNoCancel, - MessageBoxIcon.Warning); + KryptonMessageBoxIcon.Warning); if (result == DialogResult.Yes) { diff --git a/Elucidate/Elucidate/Forms/LiveLog.Designer.cs b/Elucidate/Elucidate/Forms/LiveLog.Designer.cs index d7c052a..64602df 100644 --- a/Elucidate/Elucidate/Forms/LiveLog.Designer.cs +++ b/Elucidate/Elucidate/Forms/LiveLog.Designer.cs @@ -28,6 +28,7 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LiveLog)); this.rtbLiveLog = new System.Windows.Forms.ListBox(); this.SuspendLayout(); // @@ -50,9 +51,11 @@ private void InitializeComponent() this.AutoScaleDimensions = new System.Drawing.SizeF(120F, 120F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.ClientSize = new System.Drawing.Size(912, 506); + this.CloseBox = false; this.Controls.Add(this.rtbLiveLog); this.DoubleBuffered = true; this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MinimumSize = new System.Drawing.Size(930, 500); this.Name = "LiveLog"; this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show; diff --git a/Elucidate/Elucidate/Forms/LiveLog.resx b/Elucidate/Elucidate/Forms/LiveLog.resx index 1af7de1..006ba9b 100644 --- a/Elucidate/Elucidate/Forms/LiveLog.resx +++ b/Elucidate/Elucidate/Forms/LiveLog.resx @@ -117,4 +117,261 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA + AABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/itP//4rT//+K0///i + tP8AAAAAAAAAAAAAAAD/4rT//+K0///itP//4rT//+K0///itP//4rT//+K0/wAAAAAAAAAAAAAAAAAA + AAD/4rT//+K0///itP//4rT//+K0///itP//4rT//+K0///itP8AAAAAAAAAAP/itP//4rT//+K0///i + tP//4rT//+K0///itP//4rT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i + tP//4rT//+K0///itP8AAAAAAAAAAAAAAAD/4rT//+K0///itP//4rT/AAAAAP/itP//4rT//+K0///i + tP8AAAAAAAAAAAAAAAD/4rT//+K0///itP//4rT/AAAAAP/itP//4rT//+K0///itP8AAAAAAAAAAP/i + tP//4rT//+K0///itP//4rT//+K0///itP//4rT//+K0///itP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP/itP//4rT//+K0///itP8AAAAAAAAAAP/itP//4rT//+K0///itP8AAAAAAAAAAP/i + tP//4rT//+K0///itP//4rT//+K0///itP//4rT//+K0///itP//4rT/AAAAAP/itP//4rT//+K0///i + tP8AAAAAAAAAAP/itP//4rT//+K0///itP8AAAAAAAAAAP/itP//4rT//+K0///itP8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/itP//4rT//+K0///itP8AAAAAAAAAAP/itP//4rT//+K0///i + tP8AAAAAAAAAAP/itP//4rT//+K0///itP//4rT//+K0///itP//4rT//+K0///itP8AAAAAAAAAAP/i + tP//4rT//+K0///itP+Nh4Q6jYeEY//itP//4rT//+K0///itP8AAAAAAAAAAAAAAAD/4rT//+K0///i + tP//4rT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/itP//4rT//+K0///itP8AAAAA/+K0///i + tP//4rT//+K0/wAAAAAAAAAAAAAAAAAAAAD/4rT//+K0///itP//4rT/AAAAAP/itP//4rT//+K0///i + tP8AAAAAAAAAAP/itP//4rT//+K0///itP+mnpr5t6+q+v/itP//4rT//+K0///itP+Nh4RmjYeEDAAA + AAD/4rT//+K0///itP//4rT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/itP//4rT//+K0///i + tP//4rT//+K0///itP//4rT/HBYSGwAAAAAAAAAAAAAAAAAAAAD/4rT//+K0///itP//4rT/AAAAAP/i + tP//4rT//+K0///itP+Nh4RDjYeE0f/itP//4rT//+K0///itP/Kvrb/yLyz///itP//4rT//+K0///i + tP+2raf6koyJ6Y2HhGz/4rT//+K0///itP//4rT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i + tP//4rT//+K0///itP//4rT//+K0///itP//4rT//+K0///itP8UEQ08AAAAAAAAAAAAAAAA/+K0///i + tP//4rT//+K0///itP//4rT//+K0/42HhICqoZ352s/I/v/itP//4rT//+K0///itP9sY1n/RT0z///i + tP//4rT//+K0///itP/Nwbr/39PL/7mvqvr/4rT//+K0///itP//4rT/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAKiIcYv/itP//4rT//+K0///itP8lHxn/HxkU///itP//4rT//+K0///itP//4rT/Eg4MPAAA + AAAAAAAA/+K0///itP//4rT//+K0///itP//4rT//+K0/8C2sPzYz8n/hHty///itP//4rT//+K0///i + tP8WDgb/FQ4G///itP//4rT//+K0///itP8zKyP/lot+/9/Vzf//4rT//+K0///itP//4rT/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAALCMd5//itP//4rT//+K0///itP8bFxL/GhUR/xgTEP//4rT//+K0///i + tP//4rT/EQ0Lzf///wEAAAAAAAAAAP/itP//4rT//+K0///itP//4rT/wLaw/c3DvP9ORj//GhQN///i + tP//4rT//+K0///itP9DOTD/Rjs0///itP//4rT//+K0///itP8VDQX/GxML/29jWf//4rT//+K0///i + tP//4rT/AAAAAAAAAAAAAAAAAAAAAAAAAAAwJyAPMScg///itP//4rT//+K0///itP8eGBT/GhUR///i + tP//4rT//+K0///itP//4rT/CQcF/woHA/8KBwP/CgcD///itP//4rT//+K0///itP//4rT/0MbA/z44 + MP8VDQX/FA0F///itP//4rT//+K0///itP8/NCv/PjMq///itP//4rT//+K0///itP8sIxz/FQ4F///i + tP//4rT//+K0///itP+Ri4iOAAAAAAAAAAAAAAAAAAAAAAAAAAAwJyAPMScg///itP//4rT//+K0///i + tP//4rT//+K0///itP//4rT//+K0///itP8SDgr/EAwH/xMOBf8mHxf/MCkg///itP//4rT//+K0///i + tP//4rT/TUQ8/w8KA/8XEAj/Qjgw///itP//4rT//+K0///itP8rIxz/KSMb///itP//4rT//+K0///i + tP//4rT//+K0///itP//4rT//+K0///itP/Bt7D6jYeELgAAAAAAAAAAAAAAAAAAAAAwJyAPMScg///i + tP//4rT//+K0///itP//4rT//+K0///itP//4rT//+K0/w8MCf8WEw//EAsG/xEMBf8hGg3/JB4R/x4Z + E///4rT//+K0///itP+JfXT/EwwG/xYOBv9FOjL/ST40///itP//4rT//+K0///itP8OCwf/DgsH///i + tP//4rT//+K0///itP//4rT//+K0///itP//4rT/Fg4G/4qAdv/e1M3/qKGctwAAAAAAAAAAAAAAAAAA + AAAwJyAPMScg/0E2Lv8xKCL/LiYg/ywkHf8oIRv/Jh4Z/yAZFf8SDwz/DwwJ/w8MCf8cGBP/Eg0G/xIM + Bf8gGQz/IRoO/xkUDv8bFxL/pZ6Y/9TKxv8rJBv/DwsE/zYtJf9QRTz/MCgf/yMcFv8LCQb/Ew8L/xwY + Ef8jHRf/KiMa/yQgGP8gGxX/Ew8L/w8MCv8tJR//OTAo/zwzLP82LCX/FQ0F/yUeF//SyMH/yr+4/I2H + hBEAAAAAAAAAAAAAAAAwJyAPMScg/0Q6Mv80KyX/LiYg/ywkHf8oIRv/Jh4Z/yAZFf8TDwz/DwwI/xEM + Cf8jHRb/FA8J/xMOBv8fGAr/IBgL/xQQCv8jIBv/0MbA/5KIfv8OCAH/HRUO/1ZLQ/82LST/JB0X/wsJ + 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 + EP8hHBb/JyMd/yMeGf8bGBL/ERAJ/xURDP8bFAz/Z1xR/93V0P/l3NP/p52V/w4KBf8mIRj/Ukk7/yMc + D//F//gBAAAAAAAAAAAwJyAPMScg/0E2Lv8xKCL/LSUf/ysjHP8oIRv/Jh4Z/yAZFf8WEQ7/FRAN/xMM + B/82LiP/HhgS/xgSC/8sJRj/MSsf/y8sKf81My//NDIu/y4rKP8jIR7/GBcT/zMwK//EvLT/2NDL/9DI + wP9za2H/KSMZ/x4YD/8dGA//HhgQ/x4YEP8eGA//IRkP/2tjWf/Fv7j/39nT/9/a1P9qZFz/EA0H/w4L + Bv9RTEP/TUQ2/yAZDP/F//gBAAAAAAAAAAAwJyAPMCcg/zMpIf8uJR//Mysl/0Y/Of9JRD7/RT85/0lE + P/8wKyj/FREO/xIMB/8xKB//GhUP/xUPCf8mIBP/Licc/y4rKP81My//ODYy/zMyL/8qKCX/IiAc/xkZ + Ff8WFRH/amZg/9HJwf/b1c//4t/Y/87Hvv+9t7D/qqae/7iyqv/OyMD/49zU/97Y0f/g2tP/qKOa/yYi + Hf8SEAr/Eg8J/z89OP9OSD3/TEQ2/xsUB//F//gBxf/4AQAAAAAwJyADMCcg8C8mH/8uJR//PTcx/y0o + Iv8cGBL/HBcR/x0YE/8zLin/OjYy/xIMBv8sIxz/GBMM/xMOCP8jHBD/KiUa/ysoJP82My7/OTg0/zg3 + M/8zMi//Kykm/yQiH/8fHhr/HBsW/xwcF/9RUEv/jYuE/8jDu//Lxb3/8evi/9XPyP/Lx77/q6ii/2to + Yv8pKSL/HBoV/xgWEP8WFQ//Q0A7/1hUTP9BOy//R0Aw/xsVCP/F//gBxf/4AQAAAAAAAAAAMCcgGy8m + H5MuJR//IhwW/zAoIP9CNy7/PzQr/y8nIf8bFhH/GRQP/xIMBv8mHRb/FRAK/xINBv8gGg3/KSIV/zEr + H/8+OS7/Ojgz/z08N/87Ojb/NjUy/zAvLP8rLCj/KSom/yorJv8rLSj/LTAq/y8yLf8wNC//MTUw/zE0 + L/8wNC7/LzEr/ystKP8nKCP/JyYg/zs8Nv9TU03/TkpE/0M9Mv9CPDD/PDQm/xsVCP/F//gBxf/4AQAA + AAAAAAAAAAAAAAAAAAAuJR/2OjAo/0g8Mf9CNyz/PzQr/0M3Lv8kHRn/GRQQ/xALBv8bFQ3/Ew4H/xIM + Bv8fGAv/JB0R/y4oHP85NCj/NjUx/z49Of9APzv/QEE9/0JBPP9CQj3/QkQ+/0NFP/9ER0H/R0pF/0lM + R/9QVlH/T1dR/0dMRv9FS0T/Q0dB/0FDPf9MTkj/UlVO/0FCO/9CQTn/RUE3/0VBNf9DPTL/KyUX/xwW + CfbF//gCxf/4AQAAAAAAAAAAAAAAAAAAAAAuJR/nKyId/zAoH/80KyL/Mykh/yoiG/8YEw//HBYS/xcR + B/8RDAX/EAsF/xEMBv8dFgr/IRoO/yslGv80LiL/NDIu/z08Of9DQz//SkpG/1NSSv9VVU3/V1dP/1lb + U/9aXlb/XGBZ/15kXP9pdW3/a3Zu/2BnX/9gZl7/XWNb/1peVv9XWlH/UVNL/01NRf9KSUD/S0c8/0dD + OP9BPDD/IhsP/x0YC9DF//gCxf/4AgAAAAAAAAAAAAAAAAAAAAAuJR+3KCEb/x8ZE/8eGBP/GxUR/xkT + D/8ZFBD/HBYS/BoTBtwaEwb/MSca/0A3LP9QRC//VEoz/19UQP9mXEn/WldO/2NhWv9pZ2D/bWtg/25u + Y/9ycmf/dHZr/3d8cf94f3T/fIR4/32HfP+QoJn/kKGb/3+Kf/9+iX7/fIV6/3h/dP9zeG3/bG9l/2do + Xf9jYlX/XVtO/1RQRf8yLSH/HxoO/yIeEWnF//gExf/4AgAAAAAAAAAAAAAAAAAAAAAuJR8/LCQe/yoi + G/8lHhj/IhsW/yEbFv8fGRX/HBYSpSMcEBkZEga5GRIG/xoTB/8bFAf/GxUI/xsVCP8dFwr/HxkN/yEc + D/8jIBP/JyUY/ysqHv8vMST/NTgs/zo+M/8+RTn/Qks//0ZQRf9id2z/Y3ht/0pVSf9IUkf/Rk9E/0JK + Pv8+RDj/OT4y/zM2Kv8vMCP/Kyoe/yclGP8lIxbPKikdacX/+AfF//gExf/4AgAAAAAAAAAAAAAAAAAA + AAAAAAAALCQeSCsjHKUoIRvMJh4ZvSMcF5kfGRVyHBYSCQAAAAAhGxITFQ8F8BYQBv8WEAb/FhEH/xgT + Cf8YFAr/GxcN/x0aEP8zOC9ixf/4FhwhHv8kLCj/Ljgz/zlEQP9EUk3/TVtX/1RlYP92ko3/d5OO/1pr + Z/9WaGP/UF9b/0hWUv8+S0f/Mz86/ykzL/8iKSb/xf/4HcX/+BbF//gQxf/4C8X/+AjF//gFxf/4AwAA + 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 + +APF//gFxf/4B8X/+ArF//gPxf/4FMX/+Bo3RUGCKDEt5is1Mf8xPjr/OkpG/0NVUf98n5n/faGb/0pe + Wv9FV1P/PU1I/zVDP/8vOzf/Ljo23VJoY2XF//ggxf/4GsX/+BPF//gOxf/4CsX/+AfF//gFxf/4AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMX/ + +AHF//gBxf/4AsX/+ALF//gExf/4BcX/+AjF//gMxf/4EMX/+BbF//gcxf/4IsX/+CnF//gwxf/4NsX/ + +D7F//iFxf/4hsX/+EPF//hAxf/4OsX/+DTF//guxf/4KMX/+CLF//gbxf/4FcX/+BDF//gMxf/4CMX/ + +AXF//gExf/4AuHAPAGAf6dS4cIcIYAfp1LhhgAhhh+nUuGGAGAHD6dS4Q8IYAEPp1LgDwgAAA+nUuAD + gAAAD6dSwAGAAAAPp1LAAMAAAA+nUoAAAAAAD6dSgAAAAAAHp1KAAAAAAAenUoAAAAAAA6dSgAAAAAAD + p1KAAAAAAAOnUoAAAAAAAadSgAAAAAADp1KAAAAAAAOnUoAAAAAAA6dSgAAAAAADp1KAAAAAAAOnUoAA + AAAAA6dSgAAAAAADp1KAAAAAAAOnUoAAAAAAA6dSgAAAAAADp1KAAAAAAAOnUoAAAAAAAadSgAAAAAAB + p1KAAAAAAACnUoAAAAAAAKdSwAAAAAAAp1LwAAAAAACnUvAAAAAAAKdS8AAAAAAAp1LwAAAAAACnUvgI + AAAAAKdS//wAAAAAp1L//AAAAACnUv/8AAAAAKdS//wAAAAAp1L//AAAAACnUv/8AAAAAKdS//wAAAAA + p1L//AAAAACnUv/+AAAAAKdS//4AAAAAp1L//gAAAACnUigAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/itP//4rT//+K0qgAAAAD/4rRV/+K0///itP//4rTG/+K0///i + tP//4rQ5AAAAAP/itFX/4rT//+K0///itMb/4rT//+K0///itKoAAAAA/+K0///itP//4rT//+K0///i + tP//4rSO/+K0OQAAAAAAAAAAAAAAAAAAAAAAAAAA/+K0///itP//4rSqAAAAAP/itMb/4rT//+K0xv/i + tBz/4rT//+K0///itOP/4rSq/+K0xv/itP//4rT//+K0Vf/itP//4rT//+K0qgAAAAD/4rT//+K0///i + tMb/4rRV/+K0///itP//4rSqAAAAAAAAAAAAAAAAAAAAAAAAAAD/4rT//+K0///itKr/4rQ5/+K0///i + tP//4rRxAAAAAP/itMb/4rT//+K0///itMb/4rT//+K0///itKoAAAAA/+K0///itP/bxqbTmZKOjP/i + tP//4rT/6dGrtY2HhA7/4rRV/+K0///itP//4rRVAAAAAAAAAAAAAAAAAAAAAP/itP//4rT//+K04//i + tOP/4rT/modsmgAAAAAAAAAA/+K0Vf/itP//4rT//+K0Vf/itP//4rT/4cqnuY2HhGz/4rT//+K0/+nS + sf7Atq79/+K0///itP/izKvtmJGOrcOym4X/4rT//+K0///itFUAAAAAAAAAAAAAAAAqIhwW/+K0///i + tP/mzKL/tZ9////itP//4rT/yrOO1E9FNzcAAAAA/+K0qv/itP//4rT//+K0///itP+nn5vFvLKr/f/i + tP//4rT/xK6M/z01LP//4rT//+K0/93Gpf+3rKP/2Mi1/f/itP//4rT//+K0VQAAAAAAAAAAAAAAACsi + HHz/4rT//+K0/7Sffv8cFxL/mIZr///itP//4rT/YFRDvQAAAAD/4rQ5/+K0///itP//4rT/486y/q+l + n/5SSkP//+K0///itP+7pIP/NSsj///itP//4rT/tJ59/zcvJf+3ppH//+K0///itP//4rRVAAAAAAAA + AAAwJyAFMCcgr//itP//4rT/zbWQ/2daSP//4rT//+K0/+TKof9COSz/DwsF/xURC///4rT//+K0///i + tP/Csp7/Jh8Y/x4WDv//4rT//+K0/7ymhP83LSX//+K0///itP/Qt5L/aFlE///itP//4rT/38mp5ZuU + kEYAAAAAAAAAADAnIAUwJyCv/+K0///itP//4rT//+K0///itP//4rT/Rj0w/xENCP8XEQj/Jh8U/5uI + bP//4rT/5Mul/1RJPf8fFw//QTYt///itP//4rT/sZ18/xcTDf//4rT//+K0///itP//4rT//+K0/5eD + Zv+8rp3+sKmjsAAAAAAAAAAAMCcgBTAnIK88Miv/Lych/yojHP8mHxn/GxUS/xANCf8UEAz/FhEL/xYQ + B/8gGQz/GRUP/4F6df+JgHr/GBIL/0I5MP81LCT/FxIN/xMPC/8aFQ//IBoT/x4ZEv8bFhH/GBQQ/y4n + IP87Miv/JBsU/09IQf/Ivrb+g315KAAAAAAwJyAFMCcgr0I4Mf8yKSP/KyMc/yYeGf8bFRL/EA0J/xkT + D/8cFxD/GBII/x8XCv8iHhn/p5+a/0c/N/8iGhP/QDcu/x4ZEv8TEAv/FhEM/xMOCf8TDgn/FA8K/xkU + Dv8eGRT/GBQQ/zoxKf84Lyf/IRwW/7CnoP+IgHmOAAAAADAnIAUwJyCvSkE5/zYuJ/8rIx3/Jh8Z/xwV + Ev8RDQn/GxYQ/ychGf8dFg3/IRkM/zs3Mf+/t7H/IBkR/zgvJ/8rJBz/FBAL/xcUDP8UDwr/GRQL/x0Y + DP8dFw3/GBIL/xkVD/8UEw3/KCEb/0I4MP8XEAj/lo2G/5WMgq0aEwYDMCcgBTAnIK9QSED/OTEr/ywk + Hv8mHhn/HBYS/xENCv8dGBL/Licf/yMcE/8nIBL/R0M9/8K6tP8bFQ3/NCwj/ychGv8UEAv/FBEL/xoV + Df8eFgj/JxcK/x4VCP8iHA//FREL/xUUDv8hGxX/NCwj/xoSC/+If3f/0se/qgAAAAAwJyAFMCcgr1VL + Rf87My3/LCUe/yYfGf8cFhP/Eg4L/yAaFP8zLCT/KSEY/zAoG/9KRUD/urOu/yAaEv8oIRr/JyEa/xIP + C/8TEQv/HxsQ/yAVCP84Ggv/GREH/yEcD/8VEgz/ExEM/yIdF/8zKiP/GBIK/46Dev/IvrWqAAAAADAn + IAUwJyCvU0pE/zoyLP8sJB3/Jh4Z/xwWEv8SDgv/IBoU/zQtJP8rIxr/Ni4h/z05Nf+xqqb/Mysk/yUf + F/8tJh//FREM/xQTDP8fGhD/JhwN/zYcC/8lGQv/Ix4S/xERDP8QDgr/KyQd/zEpIP8cFQ7/p5uS/6Oa + kKoAAAAAMCcgBTAnIK9NRD3/Ni4o/yskHf8mHxn/HBYT/xQPDP8hHBT/NC0k/yskG/84MST/KSUi/5GL + h/92b2r/HBYQ/zErI/8kHhj/EQ4J/xgUDf8jHxX/KSMa/yQgFf8XFw//EhEM/xoWEf8zKyP/Ix0W/0E5 + MP/Qxr7/OzMnqgAAAAAwJyAFMCcgr0c+N/80LCX/KyMd/yYeGf8cFhL/FA8M/yAbFP8zLCT/KyQb/zky + Jv8qJyT/V1NO/7WtqP81Lif/KyUd/zwyLP8dGBL/EA4J/xYVEf8cGhj/FhUQ/xUTDv8ZFRD/Misk/zMr + JP8WEQv/hntz/8rBuP8bFAeqAAAAADAnIAUwJyCvQTcw/zAoIv8qIxz/Jh8Z/xwWEv8UEA3/IRoT/zEq + If8oIRj/OTIl/y4rKP8mIyD/oZqU/5eOiP8bFQ7/Ny8o/0U8NP8wKSP/GxcS/xkWEf8bFxL/KCIb/z82 + Lf9GPTX/GxYQ/0xDOv/SyL//XVRG/yQdEaoAAAAAMCcgBTAnIK8+Myz/Lych/yojHP8mHhn/HBYS/xQQ + Df8gGRP/Licf/yQeFv82LyP/MC0q/ysoJf9APDj/tKym/3lwZ/8eGBD/Ligh/0lBOf9COTL/RTw0/0lB + Of9FPTX/KyUf/xoWEP9KQTj/x721/4N6cv83LyL/JR4RqgAAAAAwJyAFMCcgrzsxKv8uJiD/KiIb/yYf + Gf8cFhL/FBAN/x8YEf8oIRr/HxoR/zErH/8xLiv/MjAt/yUjH/80MSz/squk/66knP9LRDz/Ix4W/xsY + Ef8iHRf/HxoU/xgUDf89NzD/e3Jq/9LLxP+MhHz/GhYQ/0c/M/9YZ1yqAAAAADAnIAUwJyCvNCoj/zAo + Iv89NjD/OzUv/zQvK/8bFhP/HRYP/yMcFf8cFQ3/LCYa/zAtKv82NDD/Liwp/yEfHP8xLyr/eXVv/8jB + uf+rpp7/j4mA/396cv+Jg3v/nZaN/8K7tP/Dvrb/Uk5I/xsYEv85NS//TUU5/1RjWKrE//gBMCcgATAn + IHEuJR/nMisl/ywmH/8oIRr/JSAa/y0pJP8aEwz/HRcQ/xcSCf8nIRX/MC0m/zk3Mf84NzP/MS8s/yYl + If8hIBz/LCwn/19fWf+Vk4z/qKWe/5yZkv+Ih4D/RkU//yIhG/8lJR//PTo1/0tGPP9COy3/U2NYqsX/ + +AEAAAAAMCcgBi4lH3QwJyH9QDUr/0A1K/8zKiP/GxYR/xUPCf8XEQr/FhAH/yMcEP8yLSH/ODUv/z08 + OP89PTn/Ozo2/zk7Nf87PTf/PUA6/0JFQP9FS0X/P0M9/zxAOv87PTf/QkQ9/0FCO/9HRTz/Qz4z/zYw + I/9UY1inxP/4AQAAAAAAAAAALiUfSCsiHfIrIxv/KyMc/yAZFP8aFRH+FhAG9xgSCf8lHhP/MCgY/z83 + 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 + rEEAAKxBgACsQYAArEH4AKxB+ACsQfgArEE= + + \ No newline at end of file diff --git a/Elucidate/Elucidate/Forms/Settings.cs b/Elucidate/Elucidate/Forms/Settings.cs index b896f4c..d543ed2 100644 --- a/Elucidate/Elucidate/Forms/Settings.cs +++ b/Elucidate/Elucidate/Forms/Settings.cs @@ -2,7 +2,7 @@ // --------------------------------------------------------------------------------------------------------------- // // -// Copyright (C) 2010-2021 Simon Coghlan (Aka Smurf-IV) & BlueBlock 2018 +// Copyright (C) 2010-2022 Simon Coghlan (Aka Smurf-IV) & BlueBlock 2018 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -278,7 +278,7 @@ private void PerformSnapShotSourceAddNode(TreeNode selected) Log.Warn($"Data source not added. Path does not exist. Attempted to add [{newPath}]"); KryptonMessageBox.Show(this, $"Path does not exist.\nAttempted to add:\n [{newPath}]", - "Source not added", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + "Source not added", MessageBoxButtons.OK, KryptonMessageBoxIcon.Exclamation); return; } @@ -299,7 +299,7 @@ private void PerformSnapShotSourceAddNode(TreeNode selected) KryptonMessageBox.Show(this, $"Attempted to add:\n [{newPath}]\n\nWhich is on the same device as the existing device path:\n [{coveragePath.FullPath}]", - "Source not added", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + "Source not added", MessageBoxButtons.OK, KryptonMessageBoxIcon.Exclamation); return; } @@ -533,7 +533,7 @@ private void editName_Click(object sender, EventArgs e) { if (DialogResult.Yes == KryptonMessageBox.Show(this, "Changing a 'Name' will require a 'Full Sync' to be run.\nDo you wish to continue?", - @"Name Change Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + @"Name Change Warning", MessageBoxButtons.YesNo, KryptonMessageBoxIcon.Question)) { DataGridViewCell cell = selected.Cells[1]; snapShotSources.driveGrid.CurrentCell = cell; @@ -732,7 +732,7 @@ private void ReadConfigDetails(string fileToLoad) @"Failed to read the config file.", @"Config Read Error:", MessageBoxButtons.OK, - MessageBoxIcon.Error); + KryptonMessageBoxIcon.Error); return; } @@ -791,7 +791,7 @@ private void btnSave_Click(object sender, EventArgs e) @"Configuration errors still exist.", "Unable to save configuration", MessageBoxButtons.OK, - MessageBoxIcon.Exclamation); + KryptonMessageBoxIcon.Exclamation); return; } @@ -865,7 +865,7 @@ private void btnSave_Click(object sender, EventArgs e) writeResult, "Config Write Error:", MessageBoxButtons.OK, - MessageBoxIcon.Error); + KryptonMessageBoxIcon.Error); } else { @@ -927,7 +927,7 @@ private void Settings_FormClosing(object sender, FormClosingEventArgs e) "You have made changes that have not been saved.\n\nDo you wish to discard and exit?", "Settings have changed..", MessageBoxButtons.YesNo, - MessageBoxIcon.Question) + KryptonMessageBoxIcon.Question) ) { e.Cancel = true; diff --git a/Elucidate/Elucidate/HelperClasses/ConfigFileHelper.cs b/Elucidate/Elucidate/HelperClasses/ConfigFileHelper.cs index 45a5139..4eb0055 100644 --- a/Elucidate/Elucidate/HelperClasses/ConfigFileHelper.cs +++ b/Elucidate/Elucidate/HelperClasses/ConfigFileHelper.cs @@ -1,7 +1,7 @@ #region Copyright (C) // // -// Copyright (C) 2015-2021 Smurf-IV & BlueBlock 2018 +// Copyright (C) 2015-2022 Smurf-IV & BlueBlock 2018 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -352,12 +352,7 @@ public static bool IsRulePassPreviousCannotBeEmpty(string previous, string curre } // handle all other parity textbox's - if (previous == string.Empty && !string.IsNullOrEmpty(current)) - { - return false; - } - - return true; + return previous != string.Empty || string.IsNullOrEmpty(current); } /// diff --git a/Elucidate/Elucidate/HelperClasses/StorageUtil.cs b/Elucidate/Elucidate/HelperClasses/StorageUtil.cs index 7b3bd56..5b2e3c4 100644 --- a/Elucidate/Elucidate/HelperClasses/StorageUtil.cs +++ b/Elucidate/Elucidate/HelperClasses/StorageUtil.cs @@ -2,7 +2,7 @@ // --------------------------------------------------------------------------------------------------------------- // // -// Copyright (C) 2010-2021 Simon Coghlan (Aka Smurf-IV) +// Copyright (C) 2010-2022 Simon Coghlan (Aka Smurf-IV) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -216,13 +216,16 @@ orderby Convert.ToString(mo[@"DriveLetter"]) #region DllImport - [DllImport(@"kernel32.dll", SetLastError = true)] + [DllImport(@"kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] private static extern bool GetVolumeNameForVolumeMountPoint(string lpszFileName, [Out] StringBuilder lpszVolLpszVolumePathName, int cchBufferLength); - [DllImport(@"kernel32.dll", SetLastError = true)] + [DllImport(@"kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] private static extern bool GetVolumePathName(string lpszVolumeMountPoint, [Out] StringBuilder lpszVolumeName, int cchBufferLength); [DllImport(@"kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool GetDiskFreeSpaceEx(string lpDirectoryName, out ulong lpFreeBytesAvailable, out ulong lpTotalNumberOfBytes, out ulong lpTotalNumberOfFreeBytes); diff --git a/Elucidate/Elucidate/HelperClasses/Util.cs b/Elucidate/Elucidate/HelperClasses/Util.cs index ef54465..19cbe1f 100644 --- a/Elucidate/Elucidate/HelperClasses/Util.cs +++ b/Elucidate/Elucidate/HelperClasses/Util.cs @@ -3,7 +3,7 @@ // --------------------------------------------------------------------------------------------------------------- // // -// Copyright (C) 2018-2021 Smurf-IV & BlueBlock 2018 +// Copyright (C) 2018-2022 Smurf-IV & BlueBlock 2018 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -183,7 +183,7 @@ private static void RunElevatedProcess(string fileName, string args = "") } catch (Exception ex) { - KryptonMessageBox.Show(ex.Message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + KryptonMessageBox.Show(ex.Message, @"Error", MessageBoxButtons.OK, KryptonMessageBoxIcon.Error); } finally { @@ -195,6 +195,7 @@ private static void RunElevatedProcess(string fileName, string args = "") [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.Winapi)] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool GetDiskFreeSpaceExW(string lpDirectoryName, out ulong lpFreeBytesAvailable, out ulong lpTotalNumberOfBytes, out ulong lpTotalNumberOfFreeBytes); diff --git a/Elucidate/Elucidate/Program.cs b/Elucidate/Elucidate/Program.cs index b186d11..71b1e2d 100644 --- a/Elucidate/Elucidate/Program.cs +++ b/Elucidate/Elucidate/Program.cs @@ -1,7 +1,7 @@ #region Copyright (C) // // -// Copyright (C) 2011-2021 Smurf-IV +// Copyright (C) 2011-2022 Smurf-IV // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -115,7 +115,7 @@ private static void CheckAndRunSingleApp() } else { - KryptonMessageBox.Show($@"{mutexName} is already running", mutexName, MessageBoxButtons.OK, MessageBoxIcon.Stop); + KryptonMessageBox.Show($@"{mutexName} is already running", mutexName, MessageBoxButtons.OK, KryptonMessageBoxIcon.Stop); Log.Error($@"{mutexName} is already running"); } } diff --git a/Elucidate/Elucidate/Properties/AssemblyInfo.cs b/Elucidate/Elucidate/Properties/AssemblyInfo.cs index 7aff6ed..5b02f6c 100644 --- a/Elucidate/Elucidate/Properties/AssemblyInfo.cs +++ b/Elucidate/Elucidate/Properties/AssemblyInfo.cs @@ -2,7 +2,7 @@ // --------------------------------------------------------------------------------------------------------------- // // -// Copyright (C) 2010-2021 Simon Coghlan (Aka Smurf-IV) & BlueBlock 2018 +// Copyright (C) 2010-2022 Simon Coghlan (Aka Smurf-IV) & BlueBlock 2018 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -56,8 +56,8 @@ // Build Number - Increment // Revision - Day // -[assembly: AssemblyVersion("2021.12.29.10")] -[assembly: AssemblyFileVersion("21.12.29.10")] +[assembly: AssemblyVersion("2022.12.20.26")] +[assembly: AssemblyFileVersion("22.12.20.26")] // TODO: Add more relevant hints here [assembly: Dependency(@"System", LoadHint.Always)] [assembly: Dependency(@"System.Drawing", LoadHint.Always)] diff --git a/Elucidate/Elucidate/Shared/BufferedTreeView.cs b/Elucidate/Elucidate/Shared/BufferedTreeView.cs index 4149b41..3ad2760 100644 --- a/Elucidate/Elucidate/Shared/BufferedTreeView.cs +++ b/Elucidate/Elucidate/Shared/BufferedTreeView.cs @@ -18,6 +18,7 @@ protected override void OnHandleCreated(EventArgs e) private const int TVS_EX_DOUBLEBUFFER = 0x0004; [DllImport("user32.dll")] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); } } \ No newline at end of file diff --git a/Elucidate/Elucidate/Shared/FolderSelectDialog.cs b/Elucidate/Elucidate/Shared/FolderSelectDialog.cs index ec0f533..896d83e 100644 --- a/Elucidate/Elucidate/Shared/FolderSelectDialog.cs +++ b/Elucidate/Elucidate/Shared/FolderSelectDialog.cs @@ -159,6 +159,7 @@ private static IntPtr GetSafeHandle(IWin32Window window) } [DllImport("user32.dll", CharSet = CharSet.Auto)] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] private static extern IntPtr GetActiveWindow(); } diff --git a/Elucidate/Elucidate/Shared/WaitCursor.cs b/Elucidate/Elucidate/Shared/WaitCursor.cs index 8121e1b..cc63ee1 100644 --- a/Elucidate/Elucidate/Shared/WaitCursor.cs +++ b/Elucidate/Elucidate/Shared/WaitCursor.cs @@ -156,9 +156,11 @@ protected virtual void Dispose(bool disposing) } [DllImport("user32.dll")] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] private static extern IntPtr GetForegroundWindow(); [DllImport("user32.dll")] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); } diff --git a/Elucidate/Elucidate/TabPages/CommonTab.Designer.cs b/Elucidate/Elucidate/TabPages/CommonTab.Designer.cs index 1fc234d..a947a92 100644 --- a/Elucidate/Elucidate/TabPages/CommonTab.Designer.cs +++ b/Elucidate/Elucidate/TabPages/CommonTab.Designer.cs @@ -422,7 +422,7 @@ private void InitializeComponent() // btnScrub // this.btnScrub.CommandLinkImageValue.Image = global::Elucidate.Properties.Resources.cam_48; - this.btnScrub.CommandLinkTextValues.Description = "Scrubs the array, checking for silent\r\nand IO errors (default -p100 -o0)"; + this.btnScrub.CommandLinkTextValues.Description = "Scrubs the array, checking for silent\r\nand IO errors (default oldest 8%)"; this.btnScrub.CommandLinkTextValues.Heading = "Scr&ub"; this.btnScrub.Dock = System.Windows.Forms.DockStyle.Fill; this.btnScrub.Enabled = false; diff --git a/Elucidate/Elucidate/TabPages/Schedule.cs b/Elucidate/Elucidate/TabPages/Schedule.cs index 5d28239..f3bf545 100644 --- a/Elucidate/Elucidate/TabPages/Schedule.cs +++ b/Elucidate/Elucidate/TabPages/Schedule.cs @@ -3,7 +3,7 @@ // --------------------------------------------------------------------------------------------------------------- // // -// Copyright (C) 2010-2021 Simon Coghlan (Aka Smurf-IV) +// Copyright (C) 2010-2022 Simon Coghlan (Aka Smurf-IV) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ public partial class Schedule : UserControl { private static readonly Logger Log = LogManager.GetCurrentClassLogger(); - private string TaskNameSelected { get; set; } = string.Empty; + private string TaskNameSelected { get; set; } private const string TASK_FOLDER = @"Elucidate"; public Schedule() diff --git a/Elucidate/Elucidate/wyDay.Controls/Windows7Taskbar.cs b/Elucidate/Elucidate/wyDay.Controls/Windows7Taskbar.cs index 73036ba..85f2fff 100644 --- a/Elucidate/Elucidate/wyDay.Controls/Windows7Taskbar.cs +++ b/Elucidate/Elucidate/wyDay.Controls/Windows7Taskbar.cs @@ -68,6 +68,7 @@ public static void SetProgressValue(IntPtr hwnd, ulong current, ulong maximum) [DllImport("user32.dll", CharSet = CharSet.Auto)] + [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] internal static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam); } } \ No newline at end of file