mirror of
https://github.com/terrymacdonald/DisplayMagician.git
synced 2024-08-30 18:32:20 +00:00
Fixed error when removing unsaved startprograms
The startPrograms UI would error when someone tried to remove an unsaved startprogram from the FLP. This has now been resolved. Also managed to update a warning in the logs when a program starts and the original exe is a loader that loads another exe then closes itself. I've provided that warning in the log file now.
This commit is contained in:
parent
c6fb0ac5ad
commit
6565e2f2cc
@ -61,9 +61,6 @@ namespace DisplayMagician
|
||||
logger.Warn(ex, $"ShortcutRepository/ShortcutRepository: Exception while trying to initialise CoreAudioController. Audio Chipset on your computer is not supported. You will be unable to set audio settings.");
|
||||
}
|
||||
|
||||
//_audioController.DefaultPlaybackDevice.SetAsDefault();
|
||||
//_audioController.DefaultCaptureDevice.SetAsDefault();
|
||||
|
||||
// Load the Shortcuts from storage
|
||||
LoadShortcuts();
|
||||
|
||||
@ -84,30 +81,6 @@ namespace DisplayMagician
|
||||
}
|
||||
}
|
||||
|
||||
/*public static Dictionary<string, bool> ShortcutWarningLookup
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!_shortcutsLoaded)
|
||||
// Load the Shortcuts from storage if they need to be
|
||||
LoadShortcuts();
|
||||
|
||||
return _shortcutWarningLookup;
|
||||
}
|
||||
}
|
||||
|
||||
public static Dictionary<string, bool> ShortcutErrorLookup
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!_shortcutsLoaded)
|
||||
// Load the Shortcuts from storage if they need to be
|
||||
LoadShortcuts();
|
||||
|
||||
return _shortcutErrorLookup;
|
||||
}
|
||||
}*/
|
||||
|
||||
public static int ShortcutCount
|
||||
{
|
||||
get
|
||||
@ -1646,7 +1619,7 @@ namespace DisplayMagician
|
||||
logger.Error(ex, $"ShortcutRepository/RunShortcut: Couldn't access the wait status for a process we're trying to stop.");
|
||||
}
|
||||
catch (InvalidOperationException ex) {
|
||||
logger.Error(ex, $"ShortcutRepository/RunShortcut: Couldn't kill the process as there is no process associated with the Process object.");
|
||||
logger.Error(ex, $"ShortcutRepository/RunShortcut: Couldn't kill the process as the proicess appears to have closed already. This can be caused if your {processToStop.ProcessName}.exe loaded another exe then closed itself. DisplayMagician cannot track that sort of behaviour.");
|
||||
}
|
||||
catch (SystemException ex)
|
||||
{
|
||||
|
6
DisplayMagician/UIForms/ShortcutForm.Designer.cs
generated
6
DisplayMagician/UIForms/ShortcutForm.Designer.cs
generated
@ -343,11 +343,11 @@ namespace DisplayMagician.UIForms
|
||||
this.lbl_disabled_shortcut_audio_chipset.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F);
|
||||
this.lbl_disabled_shortcut_audio_chipset.ForeColor = System.Drawing.Color.White;
|
||||
this.lbl_disabled_shortcut_audio_chipset.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.lbl_disabled_shortcut_audio_chipset.Location = new System.Drawing.Point(326, 298);
|
||||
this.lbl_disabled_shortcut_audio_chipset.Location = new System.Drawing.Point(263, 298);
|
||||
this.lbl_disabled_shortcut_audio_chipset.Name = "lbl_disabled_shortcut_audio_chipset";
|
||||
this.lbl_disabled_shortcut_audio_chipset.Size = new System.Drawing.Size(430, 22);
|
||||
this.lbl_disabled_shortcut_audio_chipset.Size = new System.Drawing.Size(557, 22);
|
||||
this.lbl_disabled_shortcut_audio_chipset.TabIndex = 34;
|
||||
this.lbl_disabled_shortcut_audio_chipset.Text = "Unsupported Audio Chipset. Setting audio isn\'t supported :(";
|
||||
this.lbl_disabled_shortcut_audio_chipset.Text = "Unsupported Audio Chipset. Setting audio isn\'t supported on your computer :(";
|
||||
this.lbl_disabled_shortcut_audio_chipset.Visible = false;
|
||||
//
|
||||
// gb_capture_settings
|
||||
|
@ -1965,8 +1965,10 @@ namespace DisplayMagician.UIForms
|
||||
|
||||
public void RemoveStartProgram(StartProgramControl startProgramControlToRemove)
|
||||
{
|
||||
// If we find the start program then we need to remove it from the list
|
||||
// If we find the start program then we need to remove it from the list (only if one was supplied)
|
||||
if (_shortcutToEdit.StartPrograms != null && _shortcutToEdit.StartPrograms.Count > 0)
|
||||
_shortcutToEdit.StartPrograms.Remove(startProgramControlToRemove.StartProgram);
|
||||
|
||||
// And we remove the program control passed in to this function as well
|
||||
flp_start_programs.SuspendLayout();
|
||||
flp_start_programs.Controls.Remove(startProgramControlToRemove);
|
||||
@ -2113,7 +2115,10 @@ namespace DisplayMagician.UIForms
|
||||
|
||||
private void btn_add_new_start_program_Click(object sender, EventArgs e)
|
||||
{
|
||||
StartProgram newStartProgram = new StartProgram() { };
|
||||
// Create a new startProgram with sensible defaults
|
||||
StartProgram newStartProgram = new StartProgram() {
|
||||
CloseOnFinish = true
|
||||
};
|
||||
StartProgramControl newStartProgramControl = new StartProgramControl(newStartProgram, flp_start_programs.Controls.Count);
|
||||
newStartProgramControl.Dock = DockStyle.None;
|
||||
newStartProgramControl.Width = flp_start_programs.Width - 40;
|
||||
|
@ -12,6 +12,7 @@ using WindowsDisplayAPI;
|
||||
using System.Diagnostics;
|
||||
using System.Text.RegularExpressions;
|
||||
using NvAPIWrapper.Native.GPU;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DisplayMagicianShared
|
||||
{
|
||||
@ -27,6 +28,7 @@ namespace DisplayMagicianShared
|
||||
public static Version _version = new Version(1, 0, 0);
|
||||
private static ProfileItem _currentProfile;
|
||||
private static List<string> _connectedDisplayIdentifiers = new List<string>();
|
||||
private static bool notifiedEDIDErrorToUser = false;
|
||||
|
||||
// Other constants that are useful
|
||||
public static string AppDataPath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "DisplayMagician");
|
||||
@ -905,13 +907,26 @@ namespace DisplayMagicianShared
|
||||
|
||||
foreach (Display attachedDisplay in attachedDisplayDevices)
|
||||
{
|
||||
DisplayAdapter displayAdapter = attachedDisplay.Adapter;
|
||||
PathDisplayAdapter pathDisplayAdapter = displayAdapter.ToPathDisplayAdapter();
|
||||
PathDisplaySource pathDisplaySource = attachedDisplay.ToPathDisplaySource();
|
||||
PathDisplayTarget pathDisplayTarget = attachedDisplay.ToPathDisplayTarget();
|
||||
DisplayAdapter displayAdapter = null;
|
||||
PathDisplayAdapter pathDisplayAdapter = null;
|
||||
PathDisplaySource pathDisplaySource = null;
|
||||
PathDisplayTarget pathDisplayTarget = null;
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
// We keep these lines here to detect if there is an exception so we can report it
|
||||
// nicely to the user.
|
||||
displayAdapter = attachedDisplay.Adapter;
|
||||
pathDisplayAdapter = displayAdapter.ToPathDisplayAdapter();
|
||||
pathDisplaySource = attachedDisplay.ToPathDisplaySource();
|
||||
pathDisplayTarget = attachedDisplay.ToPathDisplayTarget();
|
||||
|
||||
// This line is just to force an EDID lookup first up so that we can deterine if there is an issue
|
||||
// with the Monitor, and then tell the user
|
||||
string EDIDManufacturerId = pathDisplayTarget.EDIDManufactureId.ToString();
|
||||
|
||||
// print some trace messages so we can figure out issues if needed later
|
||||
SharedLogger.logger.Trace($"ProfileRepository/GenerateProfileDisplayIdentifiers: ADDN : {attachedDisplay.DeviceName}");
|
||||
SharedLogger.logger.Trace($"ProfileRepository/GenerateProfileDisplayIdentifiers: ADDFN : {attachedDisplay.DisplayFullName}");
|
||||
SharedLogger.logger.Trace($"ProfileRepository/GenerateProfileDisplayIdentifiers: ADDIN : {attachedDisplay.DisplayName}");
|
||||
@ -953,6 +968,22 @@ namespace DisplayMagicianShared
|
||||
SharedLogger.logger.Trace($"ProfileRepository/GenerateProfileDisplayIdentifiers: PDTTI : {pathDisplayTarget.TargetId}");
|
||||
SharedLogger.logger.Trace($"ProfileRepository/GenerateProfileDisplayIdentifiers: PDTVRS : {pathDisplayTarget.VirtualResolutionSupport}");
|
||||
}
|
||||
catch (WindowsDisplayAPI.Exceptions.InvalidEDIDInformation ex)
|
||||
{
|
||||
SharedLogger.logger.Error(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers: Exception while trying to get information from your monitor {attachedDisplay.DisplayFullName} about it's configuration. DisplayMagician may not be able to use this monitor!");
|
||||
if (!notifiedEDIDErrorToUser)
|
||||
{
|
||||
MessageBox.Show(
|
||||
$"Your monitor {attachedDisplay.DisplayFullName} is not responding when we ask about it's configuration. DisplayMagician may not be able to use this monitor!", @"DisplayMagician cannot talk to your monitor",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
notifiedEDIDErrorToUser = true;
|
||||
}
|
||||
}
|
||||
catch (WindowsDisplayAPI.Exceptions.TargetNotAvailableException ex)
|
||||
{
|
||||
SharedLogger.logger.Error(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers: Exception while we were trying to access the DisplayTarget to gather information about your display configuration.");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SharedLogger.logger.Warn(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers: Exception accessing one of the WindowsDisplayAPI items to print it out during a TRACE session");
|
||||
@ -983,6 +1014,10 @@ namespace DisplayMagicianShared
|
||||
{
|
||||
displayInfo.Add(pathDisplayTarget.ConnectorInstance.ToString());
|
||||
}
|
||||
catch (WindowsDisplayAPI.Exceptions.TargetNotAvailableException ex)
|
||||
{
|
||||
SharedLogger.logger.Error(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers: Exception2 while we were trying to access the DisplayTarget to gather information about your display configuration.");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SharedLogger.logger.Warn(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers: Exception getting Windows Display Target Connector Instance from video card. Substituting with a # instead");
|
||||
@ -1001,27 +1036,51 @@ namespace DisplayMagicianShared
|
||||
{
|
||||
displayInfo.Add(pathDisplayTarget.EDIDManufactureCode.ToString());
|
||||
}
|
||||
catch (WindowsDisplayAPI.Exceptions.InvalidEDIDInformation ex)
|
||||
{
|
||||
SharedLogger.logger.Error(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers2: Exception while trying to get information from your monitor {attachedDisplay.DisplayFullName} about it's configuration. DisplayMagician may not be able to use this monitor!");
|
||||
}
|
||||
catch (WindowsDisplayAPI.Exceptions.TargetNotAvailableException ex)
|
||||
{
|
||||
SharedLogger.logger.Error(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers2: Exception while we were trying to access the DisplayTarget to gather information about your display configuration.");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SharedLogger.logger.Warn(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers: Exception getting Windows Display EDID Manufacturer Code from video card. Substituting with a # instead");
|
||||
SharedLogger.logger.Warn(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers2: Exception getting Windows Display EDID Manufacturer Code from video card. Substituting with a # instead");
|
||||
displayInfo.Add("#");
|
||||
}
|
||||
try
|
||||
{
|
||||
displayInfo.Add(pathDisplayTarget.EDIDManufactureId.ToString());
|
||||
}
|
||||
catch (WindowsDisplayAPI.Exceptions.InvalidEDIDInformation ex)
|
||||
{
|
||||
SharedLogger.logger.Error(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers3: Exception while trying to get information from your monitor {attachedDisplay.DisplayFullName} about it's configuration. DisplayMagician may not be able to use this monitor!");
|
||||
}
|
||||
catch (WindowsDisplayAPI.Exceptions.TargetNotAvailableException ex)
|
||||
{
|
||||
SharedLogger.logger.Error(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers3: Exception while we were trying to access the DisplayTarget to gather information about your display configuration.");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SharedLogger.logger.Warn(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers: Exception getting Windows Display EDID Manufacturer ID from video card. Substituting with a # instead");
|
||||
SharedLogger.logger.Warn(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers3: Exception getting Windows Display EDID Manufacturer ID from video card. Substituting with a # instead");
|
||||
displayInfo.Add("#");
|
||||
}
|
||||
try
|
||||
{
|
||||
displayInfo.Add(pathDisplayTarget.EDIDProductCode.ToString());
|
||||
}
|
||||
catch (WindowsDisplayAPI.Exceptions.InvalidEDIDInformation ex)
|
||||
{
|
||||
SharedLogger.logger.Error(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers4: Exception while trying to get information from your monitor {attachedDisplay.DisplayFullName} about it's configuration. DisplayMagician may not be able to use this monitor!");
|
||||
}
|
||||
catch (WindowsDisplayAPI.Exceptions.TargetNotAvailableException ex)
|
||||
{
|
||||
SharedLogger.logger.Error(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers4: Exception while we were trying to access the DisplayTarget to gather information about your display configuration.");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SharedLogger.logger.Warn(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers: Exception getting Windows Display EDID Product Code from video card. Substituting with a # instead");
|
||||
SharedLogger.logger.Warn(ex, $"ProfileRepository/GenerateProfileDisplayIdentifiers4: Exception getting Windows Display EDID Product Code from video card. Substituting with a # instead");
|
||||
displayInfo.Add("#");
|
||||
}
|
||||
try
|
||||
@ -1039,6 +1098,7 @@ namespace DisplayMagicianShared
|
||||
// Add it to the list of display identifiers so we can return it
|
||||
displayIdentifiers.Add(displayIdentifier);
|
||||
SharedLogger.logger.Debug($"ProfileRepository/GenerateProfileDisplayIdentifiers: DisplayIdentifier: {displayIdentifier}");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user