in the past months I did some smaller changes and implemented some possible optimizations based on feedback from individual users. Internally I changed some things around in how the Adapter IDs are matched to possibly make the switching more stable on some setups where windows would shuffle the complete internal display setup on each reboot. I did also add a change that could fix problems with restoring the monitor refresh rates.
Because both changes are rather fundamental I do not want to release this version for everyone until further testing. But I need your help to see if everything still works on your individual setup. If you are interesting in testing this new release you can download it here: https://drive.google.com/file/d/1NYDwoZyaM2ecAnK1-4eD1GHLZ2aZ6ywk
Please let me know by posting a here (any brief reply will do) if there are any changes, e.g. anything that worked before with version 0.7.0.0 does not work anymore or even better if anything that did not work with 0.7.0.0 works now!
Thanks!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Everything seems to be working similarly to my previous version, which apparently was 0.6.0.0, so at least nothing appears broken so far. I hadn't noticed the bugs you mentioned so I can't comment on those. Was anything done to try to detect displays on switch?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I actively used this software from 0.5.0.0. I always had the problem that MPS 'forgot' a profile. Most likely when something in the setup was (temporarily) Changed. I now use this 0.8.0.0 version for two months and never ran in this problem again. No bugs spotted so far.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
HDR toggling would be lovely if possible. I use your tool to switch between my normal work setup with 3 monitors to just the primary one bumped up to 144Hz for an allegedly quick game of pinball (which supports HDR). I've tried just leaving HDR on and I've tried toggling it manually, but integration with the MonitorSwitcher would be ideal. Let me know if my testing or an additional donation to contribute to suitable test devices on your end would help :-)
Oh, and it (8.0.0) seems to be working just fine on Windows 11 Pro, version 23H2.
Last edit: David H Brown 2023-11-10
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for the update! I also had an issue with refresh rate not updating with profile change. I'm using a 4K TV, one profile is 1440p 120 Hz and the other is 4K 60 Hz. It would just always set it to 60 Hz, but it with this test release, it seems to work as intented.
I've been using it for many many years, worked fine on Windows 10. I got a new Laptop with Windows 11, and hell broke lose - random crashes was the norm (with official version 0.7.0).
I upgraded to 0.8.0 and problems are fixed, so far so good!
Thank you for this amazing program!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I spoke too soon - I started getting this error on Windows 11 Home + 0.8.0, when trying to switch to a profile, either by menu or key shortcut.
Could it be some xml file of mine is corrupted? Yes, there was a profile .xml file that was half-written in c:\Users\agelo\AppData\Roaming\MonitorSwitcher\Profiles
This was the error:
(to be continued)
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
** Exception Text **
System.InvalidOperationException: There is an error in XML document (1, 1115). ---> System.Xml.XmlException: Unexpected end of file has occurred. The following elements are not closed: modeInfo, modeInfoArray, displaySettings. Line 1, position 1115.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
at System.Xml.XmlTextReaderImpl.ThrowUnclosedElements()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlReader.ReadElementString()
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderDisplayConfigModeInfoType.Read2_DisplayConfigModeInfoType()
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at MonitorSwitcherGUI.MonitorSwitcher.LoadDisplaySettings(String fileName)
at MonitorSwitcherGUI.MonitorSwitcherGUI.LoadProfile(String name)
at MonitorSwitcherGUI.MonitorSwitcherGUI.OnMenuLoad(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
** JIT Debugging **
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
So I deleted the cooked .xml file, restarted etc, and I made the mistake to format/prettify all the xml profile & Hotkeys.xml files :-(
I'm sure XML handling could be more graceful ;-)
Now I'm getting this error:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
** Exception Text **
System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseUInt32(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Convert.ToUInt32(String value)
at MonitorSwitcherGUI.MonitorSwitcher.LoadDisplaySettings(String fileName)
at MonitorSwitcherGUI.MonitorSwitcherGUI.LoadProfile(String name)
at MonitorSwitcherGUI.MonitorSwitcherGUI.OnMenuLoad(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
** JIT Debugging **
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Today I deleted the whole c:\Users\agelo\AppData\Roaming\MonitorSwitcher\ folder and started recreating the profiles, and I got this when saving a profile:
XML is definatelly buggy in this version ;-(
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
** Exception Text **
System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: Instance validation error: '65537' is not a valid value for MonitorSwitcherGUI.CCDWrapper.D3DkmdtVideoSignalStandard.
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterDisplayConfigTargetMode.Write4_D3DkmdtVideoSignalStandard(D3DkmdtVideoSignalStandard v)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterDisplayConfigTargetMode.Write6_DisplayConfigVideoSignalInfo(String n, String ns, DisplayConfigVideoSignalInfo o, Boolean needType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterDisplayConfigTargetMode.Write7_DisplayConfigTargetMode(String n, String ns, DisplayConfigTargetMode o, Boolean needType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterDisplayConfigTargetMode.Write8_DisplayConfigTargetMode(Object o)
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
at MonitorSwitcherGUI.MonitorSwitcher.SaveDisplaySettings(String fileName)
at MonitorSwitcherGUI.MonitorSwitcherGUI.OnMenuSaveAs(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
** JIT Debugging **
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Just wanted to say that the script that I was using to set up my virtual monitor broke today in version 0.7.0.0 so I downloaded this beta and...it works great! Didn't have to change anything, version 0.8.0.0 just fixed whatever blew up with my old profile and it's working fantastically.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Are you using Windows 10 or 11? Mine breaks on Windows 11, both on 0.7.0 and 0.8.0.
My other PC with Windows 10 is working fine (I'm using version 0.7.0)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi everyone,
in the past months I did some smaller changes and implemented some possible optimizations based on feedback from individual users. Internally I changed some things around in how the Adapter IDs are matched to possibly make the switching more stable on some setups where windows would shuffle the complete internal display setup on each reboot. I did also add a change that could fix problems with restoring the monitor refresh rates.
Because both changes are rather fundamental I do not want to release this version for everyone until further testing. But I need your help to see if everything still works on your individual setup. If you are interesting in testing this new release you can download it here: https://drive.google.com/file/d/1NYDwoZyaM2ecAnK1-4eD1GHLZ2aZ6ywk
Please let me know by posting a here (any brief reply will do) if there are any changes, e.g. anything that worked before with version 0.7.0.0 does not work anymore or even better if anything that did not work with 0.7.0.0 works now!
Thanks!
it works great thanks so much! no more having to switch refresh rate manually. ill let you know if i run into any bugs
Last edit: P D 2021-08-08
Everything seems to be working similarly to my previous version, which apparently was 0.6.0.0, so at least nothing appears broken so far. I hadn't noticed the bugs you mentioned so I can't comment on those. Was anything done to try to detect displays on switch?
I actively used this software from 0.5.0.0. I always had the problem that MPS 'forgot' a profile. Most likely when something in the setup was (temporarily) Changed. I now use this 0.8.0.0 version for two months and never ran in this problem again. No bugs spotted so far.
Version 0.7.0.0 had stopped working for me. I updated it to Version 0.8.0.0 Beta 4 and my problems are solved! Thanks
Last edit: Steven R Dunn 2021-09-20
Question! You said this update should help with restoring refresh rates. Should it help with toggling HDR as well?
Nope sorry, nothing was changed in this regard
HDR toggling would be lovely if possible. I use your tool to switch between my normal work setup with 3 monitors to just the primary one bumped up to 144Hz for an allegedly quick game of pinball (which supports HDR). I've tried just leaving HDR on and I've tried toggling it manually, but integration with the MonitorSwitcher would be ideal. Let me know if my testing or an additional donation to contribute to suitable test devices on your end would help :-)
Oh, and it (8.0.0) seems to be working just fine on Windows 11 Pro, version 23H2.
Last edit: David H Brown 2023-11-10
Thanks for the update! I also had an issue with refresh rate not updating with profile change. I'm using a 4K TV, one profile is 1440p 120 Hz and the other is 4K 60 Hz. It would just always set it to 60 Hz, but it with this test release, it seems to work as intented.
I've been using it for many many years, worked fine on Windows 10. I got a new Laptop with Windows 11, and hell broke lose - random crashes was the norm (with official version 0.7.0).
I upgraded to 0.8.0 and problems are fixed, so far so good!
Thank you for this amazing program!
I spoke too soon - I started getting this error on Windows 11 Home + 0.8.0, when trying to switch to a profile, either by menu or key shortcut.
Could it be some xml file of mine is corrupted? Yes, there was a profile .xml file that was half-written in c:\Users\agelo\AppData\Roaming\MonitorSwitcher\Profiles
This was the error:
(to be continued)
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
** Exception Text **
System.InvalidOperationException: There is an error in XML document (1, 1115). ---> System.Xml.XmlException: Unexpected end of file has occurred. The following elements are not closed: modeInfo, modeInfoArray, displaySettings. Line 1, position 1115.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
at System.Xml.XmlTextReaderImpl.ThrowUnclosedElements()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlReader.ReadElementString()
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderDisplayConfigModeInfoType.Read2_DisplayConfigModeInfoType()
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at MonitorSwitcherGUI.MonitorSwitcher.LoadDisplaySettings(String fileName)
at MonitorSwitcherGUI.MonitorSwitcherGUI.LoadProfile(String name)
at MonitorSwitcherGUI.MonitorSwitcherGUI.OnMenuLoad(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
** Loaded Assemblies **
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9256.0 built by: NET481REL1LAST_B
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
MonitorSwitcherGUI
Assembly Version: 0.8.0.0
Win32 Version: 0.8.0.0
CodeBase: file:///C:/Utils/MonitorSwitcher/MonitorSwitcherGUI.exe
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9251.0 built by: NET481REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
System
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9251.0 built by: NET481REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9241.0 built by: NET481REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
MonitorSwitcher
Assembly Version: 0.8.0.0
Win32 Version: 0.8.0.0
CodeBase: file:///C:/Utils/MonitorSwitcher/MonitorSwitcher.EXE
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
** JIT Debugging **
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitdebugging="true">
</system.windows.forms></configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Thumbnail
(continued)
So I deleted the cooked .xml file, restarted etc, and I made the mistake to format/prettify all the xml profile & Hotkeys.xml files :-(
I'm sure XML handling could be more graceful ;-)
Now I'm getting this error:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
** Exception Text **
System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseUInt32(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Convert.ToUInt32(String value)
at MonitorSwitcherGUI.MonitorSwitcher.LoadDisplaySettings(String fileName)
at MonitorSwitcherGUI.MonitorSwitcherGUI.LoadProfile(String name)
at MonitorSwitcherGUI.MonitorSwitcherGUI.OnMenuLoad(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
** Loaded Assemblies **
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9256.0 built by: NET481REL1LAST_B
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
MonitorSwitcherGUI
Assembly Version: 0.8.0.0
Win32 Version: 0.8.0.0
CodeBase: file:///C:/Utils/MonitorSwitcher/MonitorSwitcherGUI.exe
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9251.0 built by: NET481REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
System
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9251.0 built by: NET481REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9241.0 built by: NET481REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
MonitorSwitcher
Assembly Version: 0.8.0.0
Win32 Version: 0.8.0.0
CodeBase: file:///C:/Utils/MonitorSwitcher/MonitorSwitcher.EXE
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
** JIT Debugging **
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitdebugging="true">
</system.windows.forms></configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Today I deleted the whole c:\Users\agelo\AppData\Roaming\MonitorSwitcher\ folder and started recreating the profiles, and I got this when saving a profile:
XML is definatelly buggy in this version ;-(
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
** Exception Text **
System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: Instance validation error: '65537' is not a valid value for MonitorSwitcherGUI.CCDWrapper.D3DkmdtVideoSignalStandard.
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterDisplayConfigTargetMode.Write4_D3DkmdtVideoSignalStandard(D3DkmdtVideoSignalStandard v)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterDisplayConfigTargetMode.Write6_DisplayConfigVideoSignalInfo(String n, String ns, DisplayConfigVideoSignalInfo o, Boolean needType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterDisplayConfigTargetMode.Write7_DisplayConfigTargetMode(String n, String ns, DisplayConfigTargetMode o, Boolean needType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterDisplayConfigTargetMode.Write8_DisplayConfigTargetMode(Object o)
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
at MonitorSwitcherGUI.MonitorSwitcher.SaveDisplaySettings(String fileName)
at MonitorSwitcherGUI.MonitorSwitcherGUI.OnMenuSaveAs(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
** Loaded Assemblies **
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9256.0 built by: NET481REL1LAST_B
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
MonitorSwitcherGUI
Assembly Version: 0.8.0.0
Win32 Version: 0.8.0.0
CodeBase: file:///C:/Utils/MonitorSwitcher/MonitorSwitcherGUI.exe
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9251.0 built by: NET481REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
System
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9251.0 built by: NET481REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9241.0 built by: NET481REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
MonitorSwitcher
Assembly Version: 0.8.0.0
Win32 Version: 0.8.0.0
CodeBase: file:///C:/Utils/MonitorSwitcher/MonitorSwitcher.EXE
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.8.9032.0 built by: NET481REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
** JIT Debugging **
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitdebugging="true">
</system.windows.forms></configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Just wanted to say that the script that I was using to set up my virtual monitor broke today in version 0.7.0.0 so I downloaded this beta and...it works great! Didn't have to change anything, version 0.8.0.0 just fixed whatever blew up with my old profile and it's working fantastically.
Are you using Windows 10 or 11? Mine breaks on Windows 11, both on 0.7.0 and 0.8.0.
My other PC with Windows 10 is working fine (I'm using version 0.7.0)
-ignore, cant delete!-
Last edit: Agelos Pikoulas 2024-10-13