From 10d387d53b2bb1b1c419bdcc3f18514c7341953e Mon Sep 17 00:00:00 2001 From: Terry MacDonald Date: Sat, 20 Nov 2021 21:38:26 +1300 Subject: [PATCH] Fixed bug with startprograms UI not clearing --- DisplayMagician/ProcessUtils.cs | 26 ++++++++++++++++------ DisplayMagician/Properties/AssemblyInfo.cs | 4 ++-- DisplayMagician/UIForms/ShortcutForm.cs | 4 ++++ 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/DisplayMagician/ProcessUtils.cs b/DisplayMagician/ProcessUtils.cs index f17600d..be44c6e 100644 --- a/DisplayMagician/ProcessUtils.cs +++ b/DisplayMagician/ProcessUtils.cs @@ -423,7 +423,8 @@ namespace DisplayMagician bool usingChildProcess = false; try { - if (CreateProcessWithPriorityAsRestrictedUser(executable, arguments, ProcessUtils.TranslatePriorityToClass(processPriority), out processInfo)) + if (CreateProcessWithPriorityAsRestrictedUser(executable, arguments, ProcessUtils.TranslatePriorityToClass(processPriority), out processInfo)) + //if (CreateProcessWithPriority(executable, arguments, ProcessUtils.TranslatePriorityToClass(processPriority), out processInfo)) { if (processInfo.dwProcessId > 0) { @@ -443,14 +444,14 @@ namespace DisplayMagician runningProcesses.Add(process); } } - catch(Exception ex) + catch (Exception ex) { // it's a launcher! We need to look for children List childProcesses = GetChildProcesses(processInfo.dwProcessId); runningProcesses.AddRange(childProcesses); usingChildProcess = true; } - + } else { @@ -487,6 +488,17 @@ namespace DisplayMagician { // Start the process using built in process library ProcessStartInfo psi = new ProcessStartInfo(); + string extension = Path.GetExtension(executable); + if (extension.Equals("com", StringComparison.CurrentCultureIgnoreCase) + || extension.Equals("exe", StringComparison.CurrentCultureIgnoreCase) + || extension.Equals("msi", StringComparison.CurrentCultureIgnoreCase)) + { + psi.UseShellExecute = false; + } + else + { + psi.Verb = "Open"; + } psi.FileName = executable; psi.Arguments = arguments; psi.WorkingDirectory = Path.GetDirectoryName(executable); @@ -603,7 +615,7 @@ namespace DisplayMagician sInfoEx.StartupInfo.cb = Marshal.SizeOf(sInfoEx); try { - success = CreateProcess(fileName, cmd.ToString(), ref pSec, ref tSec, false, processFlags, IntPtr.Zero, null, ref sInfoEx, out pInfo); + success = CreateProcess(null, cmd.ToString(), ref pSec, ref tSec, false, processFlags, IntPtr.Zero, null, ref sInfoEx, out pInfo); } catch (Exception ex) { @@ -613,7 +625,7 @@ namespace DisplayMagician { try { - success = CreateProcess(fileName, cmd.ToString(), IntPtr.Zero, IntPtr.Zero, false, processFlags, IntPtr.Zero, null, ref sInfoEx, out pInfo); + success = CreateProcess(null, cmd.ToString(), IntPtr.Zero, IntPtr.Zero, false, processFlags, IntPtr.Zero, null, ref sInfoEx, out pInfo); } catch (Exception ex) { @@ -646,14 +658,14 @@ namespace DisplayMagician if (!CreateProcessAsUser( hRestrictedToken, - fileName, + null, cmd.ToString(), IntPtr.Zero, IntPtr.Zero, true, // inherit handle 0, IntPtr.Zero, - Path.GetDirectoryName(fileName), + null, ref si, out pi)) { diff --git a/DisplayMagician/Properties/AssemblyInfo.cs b/DisplayMagician/Properties/AssemblyInfo.cs index 32ddc52..bbc1c71 100644 --- a/DisplayMagician/Properties/AssemblyInfo.cs +++ b/DisplayMagician/Properties/AssemblyInfo.cs @@ -26,8 +26,8 @@ using System.Resources; [assembly: Guid("e4ceaf5e-ad01-4695-b179-31168eb74c48")] // Version information -[assembly: AssemblyVersion("2.1.0.269")] -[assembly: AssemblyFileVersion("2.1.0.269")] +[assembly: AssemblyVersion("2.1.0.280")] +[assembly: AssemblyFileVersion("2.1.0.280")] [assembly: NeutralResourcesLanguageAttribute( "en" )] [assembly: CLSCompliant(true)] diff --git a/DisplayMagician/UIForms/ShortcutForm.cs b/DisplayMagician/UIForms/ShortcutForm.cs index 845b5df..251ecff 100644 --- a/DisplayMagician/UIForms/ShortcutForm.cs +++ b/DisplayMagician/UIForms/ShortcutForm.cs @@ -1663,6 +1663,10 @@ namespace DisplayMagician.UIForms spOrder++; } } + else + { + flp_start_programs.Controls.Clear(); + } // Setup the single stop program we're beginning with if (_shortcutToEdit.StopPrograms is List && _shortcutToEdit.StopPrograms.Count > 0)