Coder Social home page Coder Social logo

terrymacdonald / displaymagician Goto Github PK

View Code? Open in Web Editor NEW
378.0 12.0 17.0 60.49 MB

DisplayMagician is an open source tool for automatically configuring your displays and sound for a game or application from a single Windows Shortcut.

Home Page: https://displaymagician.littlebitbig.com

License: GNU General Public License v3.0

C# 95.37% Smalltalk 3.28% Rich Text Format 1.35%
simracing display display-manager audio-manager game-sh

displaymagician's Introduction

DisplayMagician

DisplayMagician is an open source tool for automatically configuring your displays and sound for a game or application from a single Windows Shortcut. DisplayMagician is designed to change your display profile, change audio devices, start extra programs and then run the game or application you want. It will even reset things back to the way they were for you once you've closed the game or application!

Download

The latest version of this application is available for download via the release page.

** IMPORTANT! ** - If you tried DisplayMagician in the past and it didn't work for you, please try it again. There has been a complete rewrite of the NVIDIA, AMD and Windows video manipulation libraries, and it is able to track and manipulate nearly all possible display configuration settings!

What it does

Different games require your displays configured in different ways. If you're a simracer like me, you also require a lot of additional 'helper' applications the give you the additional functionality to game the way you want. Making all those changes each time I wanted to play each game REALLY started annoying me, and I thought there must be a better way.

There is now. DisplayMagician allows you to configure multiple different display profiles, and then use those different display profiles to create Game Shortcuts. These Game Shortcuts allow you to have your game or application start exactly the way you like it.

Do you like running Dirt Rally 2.0 on a single NVIDIA Surround window across triple screens, and yet you like to run Assetto Corsa across four individual screens (a triple and one above)? Do you like running SimHub when you play iRacing, yet you want to start Twitch when you play Call of Duty? Well with DisplayMagician you can do all that with a single Desktop Shortcut (you can even start games with a Hotkey)!

DisplayMagician also allows you to automatically change to a different audio device just for one game, and will revert that change when you close the game. Great if you have some special audio devices you use only for certain games. No more fiddling with audio settings - just play the game!

Please read through the README for features (current and planned) and issues you may encounter while using the program.

Feel free to report missing features or bugs using the project issue tracker.

Current features

DisplayMagician lets you set up the following information for each game or application:

  • Create and save a Display Profile to be used within future Desktop Shortcuts
  • Save a Game Shortcut that will automatically change to a different Display Profile and start your Game when you double-click on it.
  • Run your Game Shortcut using a keyboard shortcut (Hotkey).
  • Or start your games by right-clicking on the DisplayMagician Notification Tray icon.
  • Choose which Audio Device you want the shortcut to use. Like using the wireless headset when driving? This lets you with a single click.
  • Add one or more programs to pre-start before your game or application
  • Allows you to easily select games from the following Game Launchers:
    • Steam
    • Ubisoft Uplay
    • Origin (Electronic Arts)
    • Epic Games
    • GOG.com
  • Or select your Game from a list of installed Windows applications
  • Or even select a specific game executable to run
  • Optionally rollback to your previous Display profile once the game or application has closed.
  • Or maybe just create a Shortcut that permanently changes to a different Display Profile! The options are endless.
  • Also comes with a Shell Extension that allows you to change to a different Display Profile by right-clicking on the desktop background!
  • Supports NVIDIA Surround setups, AMD Eyefinity setups and standard Windows multi-desktop views.
  • Supports USB display devices, wireless display devices and works with SuperDisplay and Spacedesk (Android Tablets as a display)
  • Supports Windows DPI Scaling, rotated screens, setting Refresh Rates and HDR
  • Supports cloned displays, extended displays, NVIDIA Surround with additional displays, and nearly anything else you can throw at it!
  • It even contains a Field-of-view (FOV) Calculator to help set games to make objects appear at normal size
  • Allows you to easily chose installed applications from software installed via installers and UWP apps downloaded from the Microsoft Store.

Planned features

  • Migrate from .Net Framework 4.8 to .Net 7, and transition to new supported libraries
  • Create DisplayMagician v3 using MAUI rather than Winforms
  • Add Unit Tests!
  • Maybe add Intel Alchemist GPU spanned screen support when those cards are eventually released.

Requirements

  • DisplayMagician only supports 64-bit Windows 10 (version 1809 or later) and 64-bit Windows 11
  • NVIDIA Surround support requires NVIDIA Game Ready driver to be installed
  • AMD Eyefinity support requires AMD Radeon™ Software Adrenalin 2020 Edition 21.2.1 or later to be installed

Donation

I am doing this work to scratch a programming itch I've had for a while. It's pretty fun to craft something that is useful to so many people. That said, I'd appreciate a donation to help buy a coffee or two!

Buy Me A Coffee Github Sponsor

Usage

Screenshots

Initial Setup:

If you prefer to see a video on how to setup DisplayMagician, check out this awesome 'How to Setup DisplayMagician' video from JDM PC Gaming. Otherwise, perform the steps shown below:

  1. Install 'DisplayMagician'
  2. Run 'DisplayMagician'. If you have previously installed DisplayMagician then it may already be running in the System Tray/Notification area.
  3. Open the main DisplayMagician window and click on the 'Display Profiles' button
    • Use 'Windows Display Settings', 'NVIDIA Control Panel' or 'AMD Radeon Setup' to configure your display(s) exactly as you would like them
    • ALT-TAB back to DisplayMagician, and you should see the new display configuration shown in the Display Profile window.
    • Click the 'Save As/Rename' button so that DisplayMagician will remember the current Display Profile so you can use it in your Game Shortcuts.
    • You will need to do this for each different display configuration you want to use in any of your games or applications.
    • Click 'Back' button to go back to the main DisplayMagician window.
  4. Now that you have some Display Profiles set up, you can create some Game Shortcuts that will use them! Click on the 'Game Shortcuts' button.
  5. You will be shown your Shortcut Library window. This is where all your Shortcuts live, and where you have to go if you ever want to edit them.
  6. Click the 'New' button to create a new Game Shortcut
    • Choose the Display Profile you want to use with the Game Shortcut. Make sure it matches what the game expects :).
    • Click on the '2. Choose Audio' tab, to modify which speakers you use for sound, or which microphone you use to talk into.
    • Click on the '3. Choose what happens before' tab, to choose any other programs you want to start before you start the main Game or Application. You can choose if you want to shut them down afterwards too! Click on the 'Find Examples' button if you'd like to see some example helper software and their settings for popular games.
    • Click on the '4. Choose Game to start' tab, to choose the main game or application that the Game Shortcut will start and monitor.
    • Choose the Game from the list shown (be sure to click it so it has a red border), or if it's not shown in ths list then select the specific game or application executable in the 'Launch a Game executable' section of the page.
    • Click on the '5. Chose what happens afterwards' tab, and choose if you want to rollback any changes made by the Game Shortcut when it runs, or if you want to keep them rather than rolling them back.
    • If the 'auto-suggest name' option is enabled then you should have a Shortcut Name already entered in automatically.
    • You can optionally create a keyboard shortcut (Hotkey) for this Game Shortcut. To do this, click on the 'Hotkey' button.
    • Click the 'Save' button to save the Shortcut to the Shortcut Library. If you can only see the outline of a button, then you have some missing fields you need to fill in. The Save button only shows if you have a valid Shortcut set up.
  7. Once you've saved the Short cut, you should see it in the Shortcut Library.
  8. To create a Desktop shortcut file from your Shortcut, select it in the list in your Shortcut Library, and click the 'Save to Desktop' button. This will then write the Shortcut to your computer, ready to use!

You now have 3 different ways you can start your shortcut:

  • You can double-click on the Desktop shortcut you just saved to the Desktop to start your game; or
  • You can right mouse click on the DisplayMagician notification tray icon, and select the Game Shortcut from the DisplayMagician pop-up menu to start your game; or
  • (optionally) If you've set a Hotkey for your Game Shortcut, you can press the Hotkey keyboard shortcut whenever DisplayMagician is running and your Game Shortcut will run.

Have fun!

License

Copyright © Terry MacDonald 2020-2023

Original HelioDisplayManagement - copyright © Soroush Falahati 2017-2020

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 3 of the License, or (at your option) 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Credits

I’m so very thankful for the help of the following people, who make DisplayMagician possible:

  • Sean at SimCraft (Thank you so much for your generous donation!)
  • Domenic (Thanks for the solid month of troubleshooting help and the monthly sponsorship!)
  • Frcooper (thanks for the monthly donations)
  • Miiinttt (thanks for the monthly donations)

Also big thanks to:

  • Dmanzano1 (Thank you for your donation)
  • Yohan (Thank you for your donation)
  • Guennid (Thank you for your donation)
  • RBZL (thanks for the past monthly donations)
  • Davedontmind (Thank you for your donation)
  • Hmalatian (Thank you for your donation)
  • Nielssoeth (Thank you for your donation)
  • Markus Ewert 'dinex86' (Thanks for letting my use your FOV logic)
  • Dogy007 (Thanks for the sponsorship)
  • Ceramed (Thank you for your donation and your help troubleshooting SuperDisplay and SpaceDesk screens)
  • Bjorg (Thank you for your donation)
  • MichaelDWheeler (Thank you for your donation)
  • Frank (Thank you for your donation)
  • Dan Clark (Thank you for your donation)
  • Fonzmonster (Thank you for your donation)
  • Logozo (Thank you for your donation)
  • 5th (Thank you for your donation)
  • Patrickdiezi (Thank you for your donation)
  • Fifowole (Thank you for your donation)
  • Brett Horton (Thank you for your donation)
  • Patrickdiezi (Thank you for your donation)
  • NoDepth (For your bug report)
  • Chris5gd (For your bug report)
  • JabberJon (Thank you for your donation)
  • Sikhalv (Thank you for your donation)
  • Friedobaer (Thank you for your donation)
  • PanthaRhei (Thank you for your donation)
  • Matthex (Great help testing multiple display adapter bugs and 7 different screens! And for your donation!)
  • NudeNull (Thank you for your sponsorship)
  • 20vmki (Thank you for your sponsorship)
  • Lazerwolf22 (Thank you for your sponsorship)
  • Spmac (Thank you for your sponsorship)
  • Mcdbergh (thanks for the bug report)
  • JSchoonbrood (Great help testing multiple display adapter bugs and SuperDisplay Android Tablet support)
  • Outerspacejunky16 (Thanks for testing AMD support)
  • Matthex (Great help testing multiple display adapter bugs and 7 different screens!)
  • Dev1981 (Great help testing multiple display adapter bugs and DisplayLink USB)
  • Domenic (Thanks for the solid month of troubleshooting help and the sponsorship!)
  • Gretzer (thanks for the cool idea)
  • Erbkaiser (One of the most impressive testers with an amazing eye for detail)
  • SneakingJ (Major props for the help getting cloned display profiles to work)
  • Scowling (Again, without you, AMD support wouldn’t exist AT ALL! )
  • Slippery-silvia (Again, thanks for the testing help for Mosaic cards with v2.1)
  • Mobeeuz (Your thorough testing logs really helped!)
  • S4b0tage (Thanks for the testing help and the donation!)
  • Gpo123 (thanks for the bug report)
  • Whitestar127 (thanks for the bug report)
  • Frcooper (thanks for the sponsoring)
  • Stringfieldmark (thanks for continued sponsoring and the testing help)
  • Bossebossebosse (thanks for the donation)
  • Sk666 (thanks for the donation)
  • FormelLMS (thanks for the continued sponsoring and the testing help)
  • Neilperson (thanks for the cool idea)
  • DragRedSim (thanks for the bug report)
  • Original HelioDisplayManagement project created by the amazing Soroush Falahati
  • Various icons made by Freepik from www.flaticon.com

displaymagician's People

Contributors

dependabot[bot] avatar falahati avatar terrymacdonald avatar tminit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

displaymagician's Issues

2.0.1 does not start. Log indicates missing AMD driver

I'm gonna create a new ticket since the other one was closed but basically I have the exact same problem as #42.

I installed v2.0.1 a few days ago and did not manage to start it up yet. The DisplayMagician.log file states the following:
2021-10-07 19:39:50.7491|INFO|DisplayMagician.Program|Starting DisplayMagician v2.0.1.59 2021-10-07 19:39:50.8676|INFO|DisplayMagician.Program|AMDLibrary/AMDLibrary: Exception trying to load the AMD ADL DLL atiadlxx.dll. This generally means you don't have the AMD ADL driver installed.

Multiple PC restarts did not change anything. I am using Windows 10 and have an Intel processor and a Nvidia GPU.
If you need anything else, let me know.

Windows Background

Would it be possible to add background support?

I like to switch between surround and Extended mode and Would like to setup backgrounds for each.

Creating a game shortcut without referencing a game produces an unhandled exception

Unhandled exception as soon as the game shortcuts area is selected.

To Reproduce
Steps to reproduce the behaviour:

  1. Go to 'game shortcuts'
  2. Click on 'new'
  3. Select any monitor configuration
  4. Choose "game to start": Don't start a game
  5. Enter any name (e.g. "asdf")
  6. Click on "Save"

Expected behaviour
A new game shortcut is added to the library.

Reporting Logs
System.NullReferenceException
HResult=0x80004003
Message=Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Source=DisplayMagician
StackTrace:
at DisplayMagician.UIForms.ShortcutILVRenderer.DrawItem(Graphics g, ImageListViewItem item, ItemState state, Rectangle bounds) in F:_Git_Repos_private\DisplayMagician\DisplayMagician\UIForms\ImageListViewRenderers.cs:line 101

Enviroment (please complete the following information):

  • Windows Version:Win10
  • DisplayMagician Version 1.1.4.0
  • Video Card: GTX2060 super

Additional Info
I already debugged the error and it seems the whole system is broken if there is no game referenced from which an icon can be created.

Shortcut keys (Hotkeys)

How are you, friend? Your application is sensational, I would like to suggest two new functions:
1 - Use shortcut keys
2 - Possible integration with the display fusion application, so when changing a monitor profile, it would automatically change the profile of wallpapers and settings.

"Choose what happens before" issue

Describe the bug
I have programs set to run before the launch of a game. All have the "Don't start if program already running" checkbox checked (enabked).

If none of the programs are currently running, all programs start as expected prior to game launch.

However, if the program is already running, all programs below the running program will not start. The game does launch.

To Reproduce
Steps to reproduce the behaviour:

  1. Set SimHub as first program to start
  2. Don't pass any arguments
  3. Enable the "Don't start if program already running" checkbox
  4. Set CrewChief as second program to start
  5. Don't pass any arguments
  6. Enable the "Don't start if program already running" checkbox
  7. Save profile to desktop
  8. Manually start SimHub
  9. Once SimHub is running launch the game from the DisplayMagician game shortcut on the desktop

Expected behaviour
SimHub should be, and is, skipped as already running but CrewChief should start with the the game following after.

Screenshots
If necessary, let me know what screenshots would be helpful

Reporting Logs
If required I can add. Let me know if they are needed.

Enviroment (please complete the following information):

  • Windows Version: 20H2 (19042.985)
  • DisplayMagician Version: 1.1 1
  • Video Card: Asus NVIDIA GTX1080ti OC
  • Number and make/model of monitors: 3xMSI MAG322CQR and 1xBenQ PD3200U (running at 1440)
  • Video driver version: 446.47
  • Date of last video driver update: [e.g. 2021-05-18]
  • Date of last windows update: [e.g. 2021-05]

Additional context
This was noticed purely by accident as I normally always ensure any programs set to run are closed. So, I am unsure in what version this issue may have started or if was always present.

Nothing happends when apply display profile

Describe the bug
One of my display profiles doesnt work.
If I press the 'apply' button nothing happends. I already recreated the profile...

DisplayMagician-Support-20211128-1119.zip

Enviroment (please complete the following information):

  • Win11
  • DisplayMagician V2.1.1.1
  • Video Card: Nvidia GeForce GTX 1650
  • Number and make/model of monitors: 3x HP 27xq LED-Monitor
  • Date of last video driver update: dont know
  • Date of last windows update: Today I installed KB5007262

Integer Scaling options to be saved in Profile per monitor

Is your feature request related to a problem? Please describe.
When I play ETS2, I have to use a lower resolution (from 4k native to FHD) on 2 monitors due to performance.
To make up for the blur and "lower pixels" I use "Integer scaling" in NCP (see below screenshot) instead of "Aspect Ratio".
But when I have to do my regular IT work, I need to use 2 of my Monitors in QHD or UHD (depending on demand), therefore "Aspect Ratio" has to be enabled again to avoid Black Bars on a native UHD resolution.
Right now I need to change that manually everytime i switch the profile withing Display Magician, since its saved globally.

Describe the solution you'd like
Saving the integer Scaling setting per monitor per screen profile within DisplayMagician

Describe alternatives you've considered
There´s sadly no alternative out there yet to save this setting with an appropiate Tool

Additional context
Settings Page for Integer Scaling by NCP see below:
Integer Scaling

DisplayMagician sets the wrong display as the primary display

Describe the bug

DisplayMagician saves a profile which, when restored, always sets the wrong display as primary.

To Reproduce
Steps to reproduce the behaviour:

  1. Have three displays.
  2. Set the right display as disabled, using Windows settings.
  3. Set the middle display as primary, using Windows settings.
  4. Double-check with NVIDIA Control Panel that the middle display is primary there too.
  5. Open DisplayMagician and click "View Current Display"
  6. Notice that the diagram shows the left display as primary (blue with "[Primary]" text), contradicting the Windows settings/NVIDIA Control Panel.
  7. Try saving the profile anyway just to see if it works.
  8. Switch to another profile using DisplayMagician.
  9. Switch to your saved profile from step 6.

Expected behaviour

Unfortunately, it does not work: DisplayMagician sets the left display to primary, instead of the desired middle.

Now I have to go to Windows settings or NVIDIA Control Panel to make the middle display primary after every use of DisplayMagician.

I've tried deleting and recreating the profile with no results.

Screenshots

image

Reporting Logs

DisplayMagician.log

Enviroment (please complete the following information):

  • Windows Version: Win10
  • DisplayMagician Version 1.1.4
  • Video Card: Asus NVIDIA RTX 3080
  • Number and make/model of monitors: 3x Asus ROG SWIFT PG27UQ
  • Date of last video driver update: 2021-06-22
  • Date of last windows update: 2021-06-21

Additional context

If I had to guess this might have to do with wanting to set the "higher number" display (3) as primary? In my setup, just because of how I plugged things into the video card, left = 2, middle = 3, right = 1.

Second "Wait until an alternative executable is closed before continuing" option

Is your feature request related to a problem? Please describe.
Not necessarily a problem but I have found that if I want the triple screen setup to remain, and only revert to a single monitor setup after I have closed a specific program and not the game, on Tab 4 I need to select the "Launch a Game executable" option and place the executable in the "Wait until an alternative executable is closed before continuing" option. When using the "Launch a Game installed in Steam or Uplay" option, I only then have the option of either leaving the triple screen running or reverting to a single screen when closing the game, as set on Tab 5.

Describe the solution you'd like
It would be great to have the same option as under the "Launch a Game executable" labelled "Wait until an alternative executable is closed before continuing" option under the "Launch a Game installed in Steam or Uplay" option

Describe alternatives you've considered
On Tab 4 I select the "Launch a Game executable" option and place the executable in the "Wait until an alternative executable is closed before continuing" option. This makes the ease of using the "Launch a Game installed in Steam or Uplay" option redundant for me even though all the games are nicely listed.

Additional context
I have a mock-up of what it may look like below:

Add another option to below the Steam and Uplay section
Feature Request 1

Or

Move the existing one to the bottom and have the code duplicate for either scenario
Feature Request 1

Make more than 4 programs to start up before main game

"Love this, is it possible to add more programs to start then 4. this software has solved a problem i had as ive got 5 monitors"

I'd like to make the application able to start as many programs as theuser wants, and have it automatically keep adding new entries to the list. Maybe to make it a limit of 256 start up games with 'add new' selection window instead of 4.

This may not be possible with WindowsForms, and I may need to cobble together say 10 different startup programs as a stopgap measure while I wait for MAUI/.Net6 to be released.

[BUG] The Shortcut Hotkey's can't be saved or used

Describe the bug
The Shortcut Hotkey's can't be saved or used

To Reproduce
Steps to reproduce the behaviour:

  1. Go to edit a Game Shortcut
  2. Click on Hotkey button
  3. Select a Hotkey
  4. Click on the save button
  5. The Hotkey isn't shown down the bottom-left corner of the ShortcutForm

Additionally, the Hotkey doesn't work, even if DisplayMagician is restarted.

Expected behaviour
The Hotkey should be shown down the bottom-left corner of the ShortcutForm after settings a Hotkey

Screenshots
If applicable, add screenshots to help explain your problem.

Reporting Logs
I have my own logs that I have generated so do not need to upload them.
Additionally I can see that the Shortcuts_1.0.json file doesn't store any updated Hotkeys. This must mean that the Hotkey isn't being passed from the Hotkey setting window to the ShortcutForm, or the ShortcutForm isn't saving it into the ShortcutItem propoerly.

Enviroment (please complete the following information):

  • Windows Version: Windows 10
  • DisplayMagician Version: v1.1.0
  • Video Card: Asus NVIDIA GTX1070]
  • Number and make/model of monitors: 2xDell UH2718H, 1x LG G27U17D
  • Date of last video driver update: 2021-05-18
  • Date of last windows update: 2021-02-15

Additional context
No other context.

Refresh rate doesn't change

Description
I made two profiles. 6008x1080 @ 75Hz and 6008x1080 @ 70Hz. When switching between them nothing happens (i.e. the refresh rate doesn't change). Both profiles are Nvidia surround mode with bezel correction.

To Reproduce
Steps to reproduce the behaviour:

  1. Create the two profiles and save them to desktop.
  2. Make sure one of them is active.
  3. Switch to the other by double clicking on the desktop shortcut.

What happens
Nothing

Expected behaviour
I expected the software to switch between the two refresh rates (70 and 75) when switching between the two profiles, since it said that v2.0.1 stores the refresh rate.

Reporting Logs
Please find it attached

Enviroment (please complete the following information):

  • Windows 10
  • DisplayMagician Version 2.0.1.59
  • Video Card: MSI RTX 3080 SUPRIM
  • Number and make/model of monitors: 3x Benq XL2720Z
  • Date of last video driver update: 2021-09-11
  • Date of last windows update: 2021-09-2
    DisplayMagician.log
    2

Steam installed but "No supported game libraries detected!"

Describe the bug
When on the "4. Choose Game to start" tab there are no games detected (see attached image)

Steam is installed in the default location of "C:\Program Files (x86)\Steam". I have five games installed and are all in the default "C:\Program Files (x86)\Steam\steamapps\common" folder.

I understand you look in the "Computer\HKEY_LOCAL_MACHINE" registry key location, however, all my game ID's are in the "Computer\HKEY_CURRENT_USER" registry key location. Specifically in the "Computer\HKEY_CURRENT_USER\SOFTWARE\Valve\Steam\Apps" registry key location.

I suspect this is the reason why I cannot see any games under the "4. Choose Game to start" tab.

To Reproduce
Possibly not applicable

Expected behaviour
For the program to detect my installed Steam games

Screenshots
Application tab image:
(DisplayMagician)_4 -Choose-Game-to-start_Tab

Registry images:
(DisplayMagician)_LocalMachine_SteamPath.png
(DisplayMagician)_LocalMachine_SteamPath

(DisplayMagician)_LocalMachine_AppID.png
(DisplayMagician)_LocalMachine_AppID

(DisplayMagician)_CurrentUser_SteamPath.png
(DisplayMagician)_CurrentUser_SteamPath

(DisplayMagician)_CurrentUser_AppID.png
(DisplayMagician)_CurrentUser_AppID

Reporting Logs
Possibly not applicable

Enviroment (please complete the following information):

  • Windows Version: Windows 10 (20H2 (OS Build 19042.906)
  • Steam Built: Mar 23 2021, at 13:13:13
  • Steam API: v020
  • Steam package version: 1616532526

Additional context
Not applicable

If there is any further info you require, please do let me know.

Change game process priority

Before using this genius app I've made Batch files.
To get best performance, I've added a task priority after launching the app.

Is this posible to add here?

It looks like that:
wmic process where name="RRRE64.exe" CALL setpriority "above normal"

impossible to see the existings shortcut + black and white steam games icon

Describe the bug
Today, with the latest version of display magician 1.1.4.0, I am unable to see my existing game shortcut in the software, as you can see on the pictures. Another "problem" is the icons of the steam games are now black and white, i don't now if it's a problem or if it's normal. Before the 1.1.1.0, the icons was in colors.

To Reproduce
Steps to reproduce the behaviour:

  1. Click on 'game shortcut in the main window'
  2. See error

Expected behaviour
Normally, I should see ATS surround shortcut previously created. The shortcut is still on my desktop but impossible to see it in the software. I can edit it because the shortcut exist but I don,t see it.

Screenshots
screen 1
screen 2 error (french)

Reporting Logs
If required I can add. Please let me know if they are needed.

Enviroment (please complete the following information):

  • Windows Version: Win10 21H1
  • DisplayMagician Version 1.1.4.0
  • Video Card: NVIDIA Geforce GTX 970
  • Number and make/model of monitors: 2xDell 2208WFP
  • Date of last video driver update: 2021-05-17 (driver version 466.63)
  • Date of last windows update: 2021-06-17

Additional context
The last things I did before this problem happening was an edit of the shortcut in this section, so I presume I did something wrong. Concerning the black and white icons, this problem happening just vefore an update of the software, may be in april or may 2021.

I'm very sorry for my english, it's not my first language. Please let me know if I can something for you to help me about theses issues.

save nvidia 3d Settings also

Is your feature request related to a problem? Please describe.
I've got a Triple Screen + 1 (on top) simrig setup. I also use this machine (with nvidia GPU) for working/gaming at an usual desk. So i have to kneel everytime to plug one cable out and the other in. That's a problem this software definetly can not solve. :) Fortunately this little helper saves me the work of always rearranging nvidia surround and displays. Thank you!
One thing what is missing. My triple setup runs on 165Hz - so i put the max FPS limit in nvidia 3d settings to 162FPS. When I switch to single setup I set the max FPS to 98 FPS, since it's a 100Hz display.

Describe the solution you'd like
Not only save Display arrangement but also the 3d settings.

Describe alternatives you've considered
Doing it manually or doing it with a 3rd software is possible but not comfortable.

Additional context
Thanks again, I've searched months for this tool and it's a great experience!

Not all displays connected

I get an error saying something like, profile cant open not all displays connected. Yet all 3 displays are clearly operating in windows.

"Pass arguments to Program" not retaining checkbox check

Describe the bug
When checking the checkbox for "Pass arguments to Program" and entering an argument, the checkbox does not retain the check, therefore the argument does not get passed to the program. I have also just done a clean install on another PC that has never had DM installed and it exhibits the same behaviour.

To Reproduce
Steps to reproduce the behaviour:

  1. Open DisplayMagician
  2. Click on 'Game Shortcuts'
  3. Select game shortcut to edit
  4. Click 'Edit'
  5. Select the 'Choose what happens before' tab
  6. Enable the 'Checkbox' next to 'Pass arguments to program:'
  7. Enter an argument (i.e. -switchgame iRacing)
  8. Click 'Save'
  9. Reselect the game shortcut just edited
  10. Click 'Edit'
  11. Select the 'Choose what happens before' tab

Expected behaviour
'Checkbox' next to 'Pass arguments to program:' should now be checked (enabled) but it is not

Screenshots
N/A (I can do a video if needed)

Reporting Logs
N/A - if required let me know and I'll get the logs attached

Enviroment (please complete the following information):

  • Windows Version: 21H1 (OS Build 19043.1023)
  • DisplayMagician Version: 1.1.2.0
  • Video Card: Asus NVIDIA GTX1080Ti OC
  • Number and make/model of monitors: 3xMSI MAG322CQR and 1xBenQ PD3200U (running at 1440)
  • Date of last video driver update: 2021-06-03 (466.63)
  • Date of last windows update: 2021-05

Additional context
This is the first time I am using the arguments feature so am not sure if this worked before in older versions

Installation of DisplayMagician v2.0.0-alpha1 fails to register shell extension

Describe the bug
During the installation of the alpha from #23 (comment), I get an error message from the installer that reads

Module C:\Program Files\DisplayMagician\DisplayMagicianShellExtension.dll failed to register. HRESULT -214702469. Contact your support personnel.

Note that I did this after removing DisplayMagician v1 and trying to do a clean install.

Screenshots

image

Enviroment (please complete the following information):

  • Windows Version: Win10 21H! (OS Build 19043.1202)
  • DisplayMagician Version 2.0.0-alpha1
  • Date of last windows update: 2021-09-05

Additional context

Not sure if this is a big deal; I'm OK without the shell extension for testing. But I thought it'd be worth logging.

Unhandled Exception

Received this error when switching my 'profiles'.. all appears ok after it completed but i figured this may be something you'd want to know about..

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

image

************** Exception Text **************
WindowsDisplayAPI.Exceptions.TargetNotAvailableException: Extra information about the target is not available.
   at WindowsDisplayAPI.DisplayConfig.PathDisplayTarget.get_DevicePath()
   at DisplayMagicianShared.Topology.PathTarget..ctor(PathTargetInfo targetInfo, SurroundTopology surround) in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\Topology\PathTarget.cs:line 13
   at DisplayMagicianShared.Topology.Path.<>c.<.ctor>b__0_0(PathTargetInfo targetDisplay) in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\Topology\Path.cs:line 20
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at DisplayMagicianShared.Topology.Path..ctor(PathInfo pathInfo) in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\Topology\Path.cs:line 20
   at DisplayMagicianShared.ProfileRepository.<>c.<UpdateActiveProfile>b__34_0(PathInfo info) in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:line 544
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at DisplayMagicianShared.ProfileRepository.UpdateActiveProfile() in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:line 541
   at DisplayMagician.UIForms.DisplayProfileForm.WndProc(Message& m) in H:\vscode-projects\DisplayMagician\DisplayMagician\UIForms\DisplayProfileForm.cs:line 455
   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.4360.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
DisplayMagician
    Assembly Version: 1.1.4.0
    Win32 Version: 1.1.4.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/DisplayMagician.exe
----------------------------------------
NLog
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.10.13013
    CodeBase: file:///C:/Program%20Files/DisplayMagician/NLog.DLL
----------------------------------------
DisplayMagician.Shared
    Assembly Version: 1.1.4.0
    Win32 Version: 1.1.4.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/DisplayMagician.Shared.DLL
----------------------------------------
McMaster.Extensions.CommandLineUtils
    Assembly Version: 3.1.0.0
    Win32 Version: 3.1.0.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/McMaster.Extensions.CommandLineUtils.DLL
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4341.0 built by: NET48REL1LAST_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.4360.0 built by: NET48REL1LAST_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.4084.0 built by: NET48REL1
    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.4190.0 built by: NET48REL1LAST_B
    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.4360.0 built by: NET48REL1LAST_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.4084.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Windows.UI
    Assembly Version: 255.255.255.255
    Win32 Version: 10.0.10011.16384
    CodeBase: file:///C:/WINDOWS/system32/WinMetadata/Windows.UI.winmd
----------------------------------------
System.Runtime
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.dll
----------------------------------------
Newtonsoft.Json
    Assembly Version: 13.0.0.0
    Win32 Version: 13.0.1.25517
    CodeBase: file:///C:/Program%20Files/DisplayMagician/Newtonsoft.Json.DLL
----------------------------------------
System.Numerics
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
System.Runtime.Serialization
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4250.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll
----------------------------------------
System.Data
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4270.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.ServiceModel
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4250.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel/v4.0_4.0.0.0__b77a5c561934e089/System.ServiceModel.dll
----------------------------------------
System.Runtime.InteropServices.RuntimeInformation
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.InteropServices.RuntimeInformation/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.InteropServices.RuntimeInformation.dll
----------------------------------------
System.ComponentModel.DataAnnotations
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ComponentModel.DataAnnotations/v4.0_4.0.0.0__31bf3856ad364e35/System.ComponentModel.DataAnnotations.dll
----------------------------------------
System.ValueTuple
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ValueTuple/v4.0_4.0.0.0__cc7b13ffcd2ddd51/System.ValueTuple.dll
----------------------------------------
System.Xml.Linq
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml.Linq/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll
----------------------------------------
System.Web
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4330.0 built by: NET48REL1LAST_B
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_64/System.Web/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Web.dll
----------------------------------------
System.ServiceModel.Internals
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4250.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel.Internals/v4.0_4.0.0.0__31bf3856ad364e35/System.ServiceModel.Internals.dll
----------------------------------------
SMDiagnostics
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4250.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/SMDiagnostics/v4.0_4.0.0.0__b77a5c561934e089/SMDiagnostics.dll
----------------------------------------
System.IdentityModel
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4250.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.IdentityModel/v4.0_4.0.0.0__b77a5c561934e089/System.IdentityModel.dll
----------------------------------------
ValveKeyValue
    Assembly Version: 0.3.1.152
    Win32 Version: 0.3.1.152
    CodeBase: file:///C:/Program%20Files/DisplayMagician/ValveKeyValue.DLL
----------------------------------------
netstandard
    Assembly Version: 2.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/netstandard/v4.0_2.0.0.0__cc7b13ffcd2ddd51/netstandard.dll
----------------------------------------
NHotkey
    Assembly Version: 2.0.0.0
    Win32 Version: 2.1.0.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/NHotkey.DLL
----------------------------------------
Microsoft.Toolkit.Uwp.Notifications
    Assembly Version: 7.0.0.0
    Win32 Version: 7.0.2.1
    CodeBase: file:///C:/Program%20Files/DisplayMagician/Microsoft.Toolkit.Uwp.Notifications.DLL
----------------------------------------
Windows.Foundation
    Assembly Version: 255.255.255.255
    Win32 Version: 10.0.10011.16384
    CodeBase: file:///C:/WINDOWS/system32/WinMetadata/Windows.Foundation.winmd
----------------------------------------
System.Runtime.InteropServices.WindowsRuntime
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.InteropServices.WindowsRuntime/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.InteropServices.WindowsRuntime.dll
----------------------------------------
NHotkey.WindowsForms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.1.0.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/NHotkey.WindowsForms.DLL
----------------------------------------
Windows.Data
    Assembly Version: 255.255.255.255
    Win32 Version: 10.0.10011.16384
    CodeBase: file:///C:/WINDOWS/system32/WinMetadata/Windows.Data.winmd
----------------------------------------
IconLib
    Assembly Version: 0.73.0.0
    Win32 Version: 0.73.0.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/IconLib.DLL
----------------------------------------
IconExtractor
    Assembly Version: 1.0.3.0
    Win32 Version: 1.0.3.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/IconExtractor.DLL
----------------------------------------
MintPlayer.IconUtils
    Assembly Version: 1.0.4.0
    Win32 Version: 1.0.4.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/MintPlayer.IconUtils.DLL
----------------------------------------
System.Drawing.Common
    Assembly Version: 4.0.0.1
    Win32 Version: 4.6.26919.02
    CodeBase: file:///C:/Program%20Files/DisplayMagician/System.Drawing.Common.DLL
----------------------------------------
WinCopies.WindowsAPICodePack.Win32Native
    Assembly Version: 2.0.0.6
    Win32 Version: 2.0.0.6
    CodeBase: file:///C:/Program%20Files/DisplayMagician/WinCopies.WindowsAPICodePack.Win32Native.DLL
----------------------------------------
NvAPIWrapper
    Assembly Version: 0.8.1.100
    Win32 Version: 0.8.1.100
    CodeBase: file:///C:/Program%20Files/DisplayMagician/NvAPIWrapper.DLL
----------------------------------------
WindowsDisplayAPI
    Assembly Version: 1.3.0.13
    Win32 Version: 1.3.0.13
    CodeBase: file:///C:/Program%20Files/DisplayMagician/WindowsDisplayAPI.DLL
----------------------------------------
AudioSwitcher.AudioApi.CoreAudio
    Assembly Version: 4.0.0.308
    Win32 Version: 4.0.0.308
    CodeBase: file:///C:/Program%20Files/DisplayMagician/AudioSwitcher.AudioApi.CoreAudio.DLL
----------------------------------------
AudioSwitcher.AudioApi
    Assembly Version: 4.0.0.308
    Win32 Version: 4.0.0.308
    CodeBase: file:///C:/Program%20Files/DisplayMagician/AudioSwitcher.AudioApi.DLL
----------------------------------------
AutoUpdater.NET
    Assembly Version: 1.6.4.0
    Win32 Version: 1.6.4.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/AutoUpdater.NET.DLL
----------------------------------------
Microsoft.CSharp
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.CSharp/v4.0_4.0.0.0__b03f5f7f11d50a3a/Microsoft.CSharp.dll
----------------------------------------
System.Dynamic
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Dynamic/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Dynamic.dll
----------------------------------------
Anonymously Hosted DynamicMethods Assembly
    Assembly Version: 0.0.0.0
    Win32 Version: 4.8.4360.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_64/mscorlib/v4.0_4.0.0.0__b77a5c561934e089/mscorlib.dll
----------------------------------------
ImageListView
    Assembly Version: 13.8.2.0
    Win32 Version: 13.8.2.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/ImageListView.DLL
----------------------------------------
EDIDParser
    Assembly Version: 1.2.0.0
    Win32 Version: 1.2.0.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/EDIDParser.DLL
----------------------------------------
Accessibility
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
BootMeUp
    Assembly Version: 1.2.0.0
    Win32 Version: 1.2.0.0
    CodeBase: file:///C:/Program%20Files/DisplayMagician/BootMeUp.DLL
----------------------------------------
CircularProgressBar
    Assembly Version: 2.8.0.16
    Win32 Version: 2.8.0.16
    CodeBase: file:///C:/Program%20Files/DisplayMagician/CircularProgressBar.DLL
----------------------------------------
WinFormAnimation
    Assembly Version: 1.6.0.4
    Win32 Version: 1.6.0.4
    CodeBase: file:///C:/Program%20Files/DisplayMagician/WinFormAnimation.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" />
</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.



Error trying to start

Describe the bug
Installation seemed to go OK, however on trying to start the application I get the following error:


Fatal Error

The type initializer for 'DisplayMagicianShared.ProfileRepository' threw an exception.

OK

To Reproduce
Well I installed it.. and tried to run it. To repro you'd need my exact setup :D

Reporting Logs

  • Create a TRACE-level DisplayMagician.log file by running C:\Program Files\DisplayMagician\DisplayMagician.exe --trace in a command prompt.
    Trying to create this trace log results in the same error

  • The above command will create a DisplayMagician.log file in C:\Users\<yourusername>\AppData\Local\DisplayMagician\Logs which should contain a LOT of detailed TRACE level log entries.
    However the log file got updated

log shows one error
`2021-09-02 15:57:38.5595|ERROR|DisplayMagician.Program|Program/StartUpNormally top level exception: The type initializer for 'DisplayMagicianShared.ProfileRepository' threw an exception.: at DisplayMagicianShared.ProfileRepository.get_AllProfiles()
at DisplayMagician.UIForms.MainForm.RefreshNotifyIconMenus() in H:\vscode-projects\DisplayMagician\DisplayMagician\UIForms\MainForm.cs:line 348
at DisplayMagician.UIForms.MainForm..ctor(Form formToOpen) in H:\vscode-projects\DisplayMagician\DisplayMagician\UIForms\MainForm.cs:line 44
at DisplayMagician.Program.StartUpApplication() in H:\vscode-projects\DisplayMagician\DisplayMagician\Program.cs:line 497 - System.ComponentModel.Win32Exception (0x80004005): The parameter is incorrect
at WindowsDisplayAPI.DisplayConfig.PathDisplaySource.get_CurrentDPIScale()
at DisplayMagicianShared.ProfileRepository.GenerateAllAvailableDisplayIdentifiers() in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:line 1405
at DisplayMagicianShared.ProfileRepository.IsPossibleRefresh() in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:line 765
at DisplayMagicianShared.ProfileRepository.LoadProfiles() in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:line 676
at DisplayMagicianShared.ProfileRepository..cctor() in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:line 82

`

Enviroment (please complete the following information):

  • Windows Version: Win10
  • DisplayMagician Version 1.1.4
  • Video Card: ASUS DUAL RX 5700 EVO OC
  • Number and make/model of monitors: 1x LG 34UC88-B 34in QHD Curved Ultrawide IPS LED Monitor, 1x Samsung Odyssey G5 QHD 144Hz FreeSync Curved 32in Monitor
  • Date of last video driver update: AMD Radeon 21.8.2 31 Aug 2021
  • Date of last windows update: 2021-09-01

AMD Eyefinity Support

This is an internal feature request/enhancement issue just so that I can keep everyone informed as to how AMD Eyefinity support is coming along.

It's quite a bit of work as there is no other AMD ADL libraries available I can just drop in place. Instead, I need to create a P/Invoke library to make use of the AMD provided DLL that comes with the AMD Radeon Software. It will take a while... 1 to 2 months is my estimate.

Slightly Changed resolution can't be saved

For European and American Truck Simulator, I have to slighty change the bezel value in Nvidia Surround, because both titles don't accept my resolution so I don't get any antialiasing.

Because I don't want to change the profile for all games (all others run fine with the correct setting) I've wanted to save a new profile only for ETS/ATS. But I can't DisplayMagician only lets me rename the active profile.

My normal profile is 7.770 x 1440 and the new one generated with Nvidia Surround is 7.760 x 1440 to match Antialiasing in the Truck Simulators.
How can I save now both profiles?

Add ability for internationalisation

From @tontonpixel

Would it be possible to modify the project to make it translatable into other languages? I would have liked to translate it into French.

Unable to launch application

Describe the bug
Throwing an exception on launch.
"The type initializer for 'DisplayMagicianShared.ProfileRepository' threw an exception."
I've reproduced the bug on both the latest version (v1.0.6) and v1.0.5

To Reproduce
Start the application from start menu, the application will not start and just produce an error.

I can bypass this starting issue by right clicking on desktop, going to create new profile which opens the app, but displays the error in more detail, clicking continue will take me to the application, but the application becomes unusable.

Expected behaviour
The application to launch successfully.

Screenshots
image

`See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.TypeInitializationException: The type initializer for 'DisplayMagicianShared.ProfileRepository' threw an exception. ---> WindowsDisplayAPI.Exceptions.InvalidEDIDInformation: EDID does not contain necessary information.
at WindowsDisplayAPI.DisplayConfig.PathDisplayTarget.get_EDIDManufactureId()
at WindowsDisplayAPI.DisplayConfig.PathDisplayTarget.get_EDIDManufactureCode()
at DisplayMagicianShared.NVIDIA.SurroundTopology.FromPathTargetInfo(PathTargetInfo pathTargetInfo) in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\NVIDIA\SurroundTopology.cs:line 56
at DisplayMagicianShared.Topology.PathTarget..ctor(PathTargetInfo targetInfo, SurroundTopology surround) in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\Topology\PathTarget.cs:line 37
at DisplayMagicianShared.Topology.Path.<>c.<.ctor>b__0_0(PathTargetInfo targetDisplay) in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\Topology\Path.cs:line 20
at System.Linq.Enumerable.WhereSelectArrayIterator2.MoveNext() at System.Linq.Buffer1..ctor(IEnumerable1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source)
at DisplayMagicianShared.Topology.Path..ctor(PathInfo pathInfo) in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\Topology\Path.cs:line 20
at DisplayMagicianShared.ProfileRepository.<>c.b__33_0(PathInfo info) in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:line 542
at System.Linq.Enumerable.WhereSelectArrayIterator2.MoveNext() at System.Linq.Buffer1..ctor(IEnumerable1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source)
at DisplayMagicianShared.ProfileRepository.UpdateActiveProfile() in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:line 539
at DisplayMagicianShared.ProfileRepository.LoadProfiles() in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:line 670
at DisplayMagicianShared.ProfileRepository..cctor() in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:line 80
--- End of inner exception stack trace ---
at DisplayMagicianShared.ProfileRepository.IsPossibleRefresh()
at DisplayMagician.UIForms.DisplayProfileForm.DisplayProfileForm_Load(Object sender, EventArgs e) in H:\vscode-projects\DisplayMagician\DisplayMagician\UIForms\DisplayProfileForm.cs:line 241
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(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.4084.0 built by: NET48REL1
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll

DisplayMagician
Assembly Version: 1.0.5.0
Win32 Version: 1.0.5.0
CodeBase: file:///C:/Program%20Files/DisplayMagician/DisplayMagician.exe

NLog
Assembly Version: 4.0.0.0
Win32 Version: 4.7.8.12686
CodeBase: file:///C:/Program%20Files/DisplayMagician/NLog.DLL

DisplayMagician.Shared
Assembly Version: 1.0.5.0
Win32 Version: 1.0.5.0
CodeBase: file:///C:/Program%20Files/DisplayMagician/DisplayMagician.Shared.DLL

McMaster.Extensions.CommandLineUtils
Assembly Version: 3.1.0.0
Win32 Version: 3.1.0.0
CodeBase: file:///C:/Program%20Files/DisplayMagician/McMaster.Extensions.CommandLineUtils.DLL

System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
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.4084.0 built by: NET48REL1
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.4084.0 built by: NET48REL1
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.4084.0 built by: NET48REL1
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.4084.0 built by: NET48REL1
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.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

Windows.UI
Assembly Version: 255.255.255.255
Win32 Version: 10.0.10011.16384
CodeBase: file:///C:/WINDOWS/system32/WinMetadata/Windows.UI.winmd

System.Runtime
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.dll

Newtonsoft.Json
Assembly Version: 12.0.0.0
Win32 Version: 12.0.3.23909
CodeBase: file:///C:/Program%20Files/DisplayMagician/Newtonsoft.Json.DLL

System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll

System.Runtime.Serialization
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll

System.Data
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll

System.ServiceModel
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel/v4.0_4.0.0.0__b77a5c561934e089/System.ServiceModel.dll

System.Runtime.InteropServices.RuntimeInformation
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.InteropServices.RuntimeInformation/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.InteropServices.RuntimeInformation.dll

System.ComponentModel.DataAnnotations
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ComponentModel.DataAnnotations/v4.0_4.0.0.0__31bf3856ad364e35/System.ComponentModel.DataAnnotations.dll

System.ValueTuple
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ValueTuple/v4.0_4.0.0.0__cc7b13ffcd2ddd51/System.ValueTuple.dll

ValveKeyValue
Assembly Version: 0.3.1.152
Win32 Version: 0.3.1.152
CodeBase: file:///C:/Program%20Files/DisplayMagician/ValveKeyValue.DLL

netstandard
Assembly Version: 2.0.0.0
Win32 Version: 4.8.4084.0
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/netstandard/v4.0_2.0.0.0__cc7b13ffcd2ddd51/netstandard.dll

System.ServiceModel.Internals
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel.Internals/v4.0_4.0.0.0__31bf3856ad364e35/System.ServiceModel.Internals.dll

SMDiagnostics
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/SMDiagnostics/v4.0_4.0.0.0__b77a5c561934e089/SMDiagnostics.dll

System.IdentityModel
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.IdentityModel/v4.0_4.0.0.0__b77a5c561934e089/System.IdentityModel.dll

ImageListView
Assembly Version: 13.8.2.0
Win32 Version: 13.8.2.0
CodeBase: file:///C:/Program%20Files/DisplayMagician/ImageListView.DLL

NvAPIWrapper
Assembly Version: 0.8.1.100
Win32 Version: 0.8.1.100
CodeBase: file:///C:/Program%20Files/DisplayMagician/NvAPIWrapper.DLL

WindowsDisplayAPI
Assembly Version: 1.3.0.13
Win32 Version: 1.3.0.13
CodeBase: file:///C:/Program%20Files/DisplayMagician/WindowsDisplayAPI.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:

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.
`

Reporting Logs
LogReporter.20210518.010032.log

Allow Users to choose an icon for a game, rather than have DM attempt to extract one

At the moment DisplayMagician automatically tries to extract the best icon it possibly can for a articular game from each game library. It tries it's best to get the latest, highest quality icon, but in some circumstances the algorithm can get a tad mixed up, and end up picking a worse quality one. This often happens with older games, as those didn't always contain an icon in the correct place within the exec, or they only had poorer quality icons within the exe.

DisplayMagician first tries to get the icon from the same place that the game library does, as that's always a good quality copy. Failing that, it tries multiple different ways to extract the highest quality bitmap from the icons embedded in the exe that launches the app. The problem with this technique, as that games often have a small launcher app that kickstarts the main game into action. They don't always have the right icons in their executable.

This enhancement is to add the ability for the user to select the location of another game exe, icon or bitmap to be used as the game icon within the shortcut library, and when a desktop shortcut is saved. This would ensure that even when the algorithm makes mistake, the user can always get things just right.

Configurable "Changing to <PROFILE_NAME> profile" dialog time

Is your feature request related to a problem?
No

Describe the solution you'd like
First of all, thanks for this amazing tool. Can't imagine a three or more monitor display setup without this.

It would be nice to be able to change the timeout for the "Changing to <PROFILE_NAME> profile" dialog on before and after a display change (or even disable those screens)

Describe alternatives you've considered

Additional context

DisplayMagician_9eCj1qtgEi
DisplayMagician_cJ1KYbfBwd

Display profile not selectable from system tray menu

Describe the bug
My 'three screens' display profile is not possible to select from the DM system tray menu option, it is always grayed out. The profile does work if selected from the Display Profiles page in the program or from a shortcut.

To Reproduce
Steps to reproduce the behaviour:

  1. Have three screens on an nVidia graphics cards that supports Surround
  2. Create a 'Surround' profile with all three screens treated as one monitor: 'Span displays with Surround' inside the nVidia Control Panel.
  3. Create a 'Three screens' profile with all three screens treated as individual monitors.
  4. Change to the Surround profile, then fruitlessly attempt to swap back to Three Screens from the systray

Expected behaviour
Since swapping FROM Three screens to surround works, I expect the other way to also work.

Screenshots
Display profiles:
Three screens
Surround

System tray behaviour:
Systray

Reporting Logs
DisplayMagician.log

Environment (please complete the following information):

  • Windows Version: Win11
  • DisplayMagician Version: 2.0.1.59
  • Video Card: Gigabyte nVidia GeForce RTX 2060 Super
  • Number and make/model of monitors: 3x Samsung SyncMaster P2250
  • Video Card Driver Version: 496.13
  • Date of last video driver update: 2021-10-12
  • Date of last windows update: 2021-10-23

Additional context
Add any other context about the problem here.

Run programs after game finishes

It would be awesome if one could run programs on the "choose what happens afterwards" tab. Just like on the "choose what happens before" tab.
My use case: I am using a VRS DfPro DD wheel. This wheel needs some registry setting to be made to be compatible with older simracing titles (RBR). I would like to be able to revert this settings immediately after the game finishes because otherwise the wheel is not working correctly on the other titles.
Thanks !

DisplayMagician v2 game profile ported from DisplayMagician v1 does not work well

Describe the bug

I have a game profile that does the following on launch:

  • Change mode to surround
  • Launch an external program
  • Launch the game through Steam (but waiting on a separate executable)

and on shutdown it is supposed to:

  • Close the external program
  • Change mode back to whatever it was previously.

This game profile was created in DisplayMagician v1, and when upgrading to DisplayMagician v2, I changed the display profile it was associated with, but did not recreate the entire thing.

To Reproduce / Expected behavior / Actual behavior

Clicking on the profile once changes the mode to surround but does not launch the external program or the game. It should do so.

Clicking on the profile again after the mode has already been set to surround will launch the external program and the game.

Once the game exits, the mode does not get changed back. It should be.

Once the game exits, I am not sure if the external program gets shut down or not. In my most recent session I shut down the external program manually mid-game. I will try to figure this out in future gaming sessions.

Reporting Logs

I did not create a trace-level log but can do so if it would be helpful. Here is the normal-level log:
DisplayMagician.log

Here are my shortcuts and profiles JSON files, renamed to txt:
Shortcuts_1.0.txt
DisplayProfiles_2.0.txt

Enviroment (please complete the following information):

  • Windows Version: Win10
  • DisplayMagician Version: 2.0.0-alpha
  • Video Card: NVIDIA RTX 3080
  • Number and make/model of monitors: 3x ASUS ROG Swift P27U
  • Date of last video driver update: 2021-08-31
  • Date of last windows update: 2021-09-05

Don't recognize similiar monitors setup's with different resolutions

Hi.
I have 4 monitor's in my setup, 3x 27" QHD and 1 22" FHD on top.
The issue is i have um profile without surround on QHD resolution, and other profile with surround with the 3x 27" monitors on FHD resolution, the issue has i want to have a another profile without surround for FHD resolution and the program don't recognized the setup whitout surround in FHD resolution it's show has the setup with QHD resolution.

Games outside of C:\ drive, non-Steam, not showing as options

Describe the bug
I have five different Steam Library folders across different drives; however, only the content of the C:\ drive one (where Steam is installed) shows up when trying to create a shortcut.

To Reproduce
Steps to reproduce the behaviour:

  1. Have multiple Steam libraries, with the information on them stored in SteamPath\steamapps\libraryfolders.vdf
  2. Click on Game Shortcuts, then New
  3. Select Choose game to start
  4. See lack of installed games, and those that are there have no image.

Expected behaviour
I have 813 games installed according to Steam, yet only the eight installed on the C: drive show up. Also, all other libraries installed (Origin, Uplay, etc.) are missing all games - it can be seen that the library plugins are attempting to load them.

Screenshots
image

Reporting Logs

  • Create a TRACE-level DisplayMagician.log file by running C:\Program Files\DisplayMagician\DisplayMagician.exe --trace in a command prompt.
  • The above command will create a DisplayMagician.log file in C:\Users\<yourusername>\AppData\Local\DisplayMagician\Logs which should contain a LOT of detailed TRACE level log entries.
  • Feel free to check the DisplayMagician.log file for any information you might not want to share with the public.
  • Once you're happy, attach the DisplayMagician.log TRACE file you just created to this issue.
    Logs.zip

Enviroment (please complete the following information):

  • Windows Version: 10
  • DisplayMagician Version: 1.1.4.0

Additional context
Attached is my libraryfolders.vdf, to provide an example of the format.
libraryfolders.zip

I did have a quick attempt at trying to rewrite the SteamLibrary.cs file to also search the libraryfolders.vdf, but ran into some issues.

Custom Color Settings Not Restored

I'm using a custom color setting for my Nvidia card, (32bit, 12bpc, RGB, Full Range). When I create a profile and switch to it, DM will not only choose the incorrect color settings, but my settings are not available to select so I can repair it. I have to switch to another resolution via the Nvidia control panel first, then the settings will reappear.

In this example, I went from 4k HDR to 1080p SDR and was stuck at 32Bit, 8bpc, YCbCr22, limited color (with no other options populated in the drop down menus).

HDMI audio devices can not be used / switched to

Describe the bug
In a profile I am using the monitor speakers. As they are driven via HDMI directly from the NVIDIA card these devices cann not be used with DisplayMagician 1.14
To Reproduce
Steps to reproduce the behaviour:

  1. Add a new game profile
  2. choose a HDMI audio device on tab 2 ( in my case the monitor with extension "(NVIDIA High Definition Audio)"
  3. Save this profile. It will get a warning icon.
  4. If you try to run the game shortcut via shortcut, you will get a warning saying that this device is not connected although it is.

Expected behaviour
Changing the audio output to HDMI / monitor devices should also be possible

Screenshots
grafik

Reporting Logs

  • Create a TRACE-level DisplayMagician.log file by running C:\Program Files\DisplayMagician\DisplayMagician.exe --trace in a command prompt.
  • The above command will create a DisplayMagician.log file in C:\Users\<yourusername>\AppData\Local\DisplayMagician\Logs which should contain a LOT of detailed TRACE level log entries.
  • Feel free to check the DisplayMagician.log file for any information you might not want to share with the public.
  • Once you're happy, attach the DisplayMagician.log TRACE file you just created to this issue.

Enviroment (please complete the following information):

  • Windows Version: Microsoft Windows [Version 10.0.19043.1165] 21H2
  • DisplayMagician Version; 1.1.4
  • Video Card: MSI Gaming X 1660 Super
  • Number and make/model of monitors: Dell U2312HM, AOC24G2W1G4, Iiyama PL3461WQ
  • Date of last video driver update: Nvid 471.96 Sept `21
  • Date of last windows update: Sept '21

Additional context
It seems that "audioDevice.State" always returns "unplugged" for HDMI devices. At least on my NVIDIA 1660 Super video card. So I compiled "ShortcutItem.cs" Line 1304 with the following change:
if ((audioDevice.State == DeviceState.Unplugged) && (!audioDevice.FullName.Contains("NVIDIA") == true))

DisplayMagician.error.log

v2.0.1 crashes on startup due to lack of AMD display driver

Log:

2021-10-02 22:40:04.8926|INFO|DisplayMagician.Program|Starting DisplayMagician v2.0.1.59
2021-10-02 22:40:05.0002|INFO|DisplayMagician.Program|AMDLibrary/AMDLibrary: Exception trying to load the AMD ADL DLL atiadlxx.dll. This generally means you don't have the AMD ADL driver installed.

I indeed do not have the AMD ADL driver installed, because I have an NVIDIA card, not an AMD card.

Unhandled exception when creating game shortcuts

Describe the bug
After creating successfully a display profile, when creating a game shortcut an error is raised.
Used DisplayMagician v1.0.3 release.

Screenshots
When trying to create a new game shortcut:
image
If i click continue, no profiles are found:
image

Reporting Logs

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentException: The path is not of a legal form.
   at System.IO.Path.NewNormalizePath(String path, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.GetFullPathInternal(String path)
   at DisplayMagician.GameLibraries.UplayLibrary.LoadInstalledGames() in H:\vscode-projects\DisplayMagician\DisplayMagician\GameLibraries\UplayLibrary.cs:line 506
   at DisplayMagician.GameLibraries.UplayLibrary.get_AllInstalledGames() in H:\vscode-projects\DisplayMagician\DisplayMagician\GameLibraries\UplayLibrary.cs:line 80
   at DisplayMagician.UIForms.ShortcutForm.ShortcutForm_Load(Object sender, EventArgs e) in H:\vscode-projects\DisplayMagician\DisplayMagician\UIForms\ShortcutForm.cs:line 798
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
   at System.Windows.Forms.Form.OnCreateControl()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(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.4300.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
DisplayMagician
    Assembly Version: 1.0.3.40831
    Win32 Version: 1.0.3.0
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/DisplayMagician.exe
----------------------------------------
NLog
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.8.12686
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/NLog.DLL
----------------------------------------
DisplayMagician.Shared
    Assembly Version: 1.0.3.40830
    Win32 Version: 1.0.3.0
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/DisplayMagician.Shared.DLL
----------------------------------------
McMaster.Extensions.CommandLineUtils
    Assembly Version: 3.1.0.0
    Win32 Version: 3.1.0.0
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/McMaster.Extensions.CommandLineUtils.DLL
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4270.0 built by: NET48REL1LAST_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.4300.0 built by: NET48REL1LAST_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.4084.0 built by: NET48REL1
    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.4190.0 built by: NET48REL1LAST_B
    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.4320.0 built by: NET48REL1LAST_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.4084.0 built by: NET48REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Windows.UI
    Assembly Version: 255.255.255.255
    Win32 Version: 10.0.10011.16384
    CodeBase: file:///C:/Windows/system32/WinMetadata/Windows.UI.winmd
----------------------------------------
System.Runtime
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.dll
----------------------------------------
Newtonsoft.Json
    Assembly Version: 12.0.0.0
    Win32 Version: 12.0.3.23909
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/Newtonsoft.Json.DLL
----------------------------------------
System.Numerics
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0 built by: NET48REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
System.Runtime.Serialization
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4250.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll
----------------------------------------
System.Data
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4270.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.ServiceModel
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4250.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel/v4.0_4.0.0.0__b77a5c561934e089/System.ServiceModel.dll
----------------------------------------
System.Runtime.InteropServices.RuntimeInformation
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.InteropServices.RuntimeInformation/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.InteropServices.RuntimeInformation.dll
----------------------------------------
System.ComponentModel.DataAnnotations
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.ComponentModel.DataAnnotations/v4.0_4.0.0.0__31bf3856ad364e35/System.ComponentModel.DataAnnotations.dll
----------------------------------------
System.ValueTuple
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.ValueTuple/v4.0_4.0.0.0__cc7b13ffcd2ddd51/System.ValueTuple.dll
----------------------------------------
System.ServiceModel.Internals
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4250.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel.Internals/v4.0_4.0.0.0__31bf3856ad364e35/System.ServiceModel.Internals.dll
----------------------------------------
SMDiagnostics
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4250.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/SMDiagnostics/v4.0_4.0.0.0__b77a5c561934e089/SMDiagnostics.dll
----------------------------------------
System.IdentityModel
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4250.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.IdentityModel/v4.0_4.0.0.0__b77a5c561934e089/System.IdentityModel.dll
----------------------------------------
ValveKeyValue
    Assembly Version: 0.3.1.152
    Win32 Version: 0.3.1.152
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/ValveKeyValue.DLL
----------------------------------------
netstandard
    Assembly Version: 2.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/netstandard/v4.0_2.0.0.0__cc7b13ffcd2ddd51/netstandard.dll
----------------------------------------
Microsoft.Toolkit.Uwp.Notifications
    Assembly Version: 7.0.0.0
    Win32 Version: 7.0.0.1
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/Microsoft.Toolkit.Uwp.Notifications.DLL
----------------------------------------
Windows.Foundation
    Assembly Version: 255.255.255.255
    Win32 Version: 10.0.10011.16384
    CodeBase: file:///C:/Windows/system32/WinMetadata/Windows.Foundation.winmd
----------------------------------------
System.Runtime.InteropServices.WindowsRuntime
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.InteropServices.WindowsRuntime/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.InteropServices.WindowsRuntime.dll
----------------------------------------
Windows.Data
    Assembly Version: 255.255.255.255
    Win32 Version: 10.0.10011.16384
    CodeBase: file:///C:/Windows/system32/WinMetadata/Windows.Data.winmd
----------------------------------------
NvAPIWrapper
    Assembly Version: 0.8.1.100
    Win32 Version: 0.8.1.100
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/NvAPIWrapper.DLL
----------------------------------------
WindowsDisplayAPI
    Assembly Version: 1.3.0.13
    Win32 Version: 1.3.0.13
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/WindowsDisplayAPI.DLL
----------------------------------------
EDIDParser
    Assembly Version: 1.2.0.0
    Win32 Version: 1.2.0.0
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/EDIDParser.DLL
----------------------------------------
AudioSwitcher.AudioApi.CoreAudio
    Assembly Version: 4.0.0.308
    Win32 Version: 4.0.0.308
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/AudioSwitcher.AudioApi.CoreAudio.DLL
----------------------------------------
AudioSwitcher.AudioApi
    Assembly Version: 4.0.0.308
    Win32 Version: 4.0.0.308
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/AudioSwitcher.AudioApi.DLL
----------------------------------------
IconLib
    Assembly Version: 0.73.0.0
    Win32 Version: 0.73.0.0
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/IconLib.DLL
----------------------------------------
AutoUpdater.NET
    Assembly Version: 1.6.4.0
    Win32 Version: 1.6.4.0
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/AutoUpdater.NET.DLL
----------------------------------------
Microsoft.CSharp
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.CSharp/v4.0_4.0.0.0__b03f5f7f11d50a3a/Microsoft.CSharp.dll
----------------------------------------
System.Dynamic
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Dynamic/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Dynamic.dll
----------------------------------------
Anonymously Hosted DynamicMethods Assembly
    Assembly Version: 0.0.0.0
    Win32 Version: 4.8.4300.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/mscorlib/v4.0_4.0.0.0__b77a5c561934e089/mscorlib.dll
----------------------------------------
ImageListView
    Assembly Version: 13.8.2.0
    Win32 Version: 13.8.2.0
    CodeBase: file:///C:/Users/joey/Documents/DisplayMagician/ImageListView.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" />
</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.

Enviroment (please complete the following information):

  • Windows Version: Windows 10 Pro
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Keep using the Display Profile after Game ends (permanent change) not working

Describe the bug
Setting “What happens to the Display Profile afterwards?” to “Keep using the Display Profile after Game ends (permanent change)” on Tab “5. Choose what happens afterwards” doesn’t seem to work.

When closing the game, the profile reverts to the original Display Profile

To Reproduce
Steps to reproduce the behaviour:

  1. Setup Tabs 1 to 4 as normal
  2. Select Tab “5. Choose what happens afterwards”
  3. Under “What happens to the Display Profile afterwards?” set the Radio button to “Keep using the Display Profile after Game ends (permanent change)”
  4. Save profile
  5. Launch Profile

Expected behaviour
After closing the launched game, the expectation is for the display to remain on the triple screen setting so another game can be launched easily without the need to revert and redo the triple screen setup.

Screenshots
I have added the five tabs with my settings, labelled “Issue2 (tab number)”
Issue2 (1)
Issue2 (2)
Issue2 (3)
Issue2 (4)
Issue2 (5)

Reporting Logs
Let me know if required

Enviroment (please complete the following information):

  • Windows Version: Windows 10 (20H2 (OS Build 19042.906)
  • DisplayMagician Version: 1.0.4
  • Nvidia GeForce Driver Version: 466.11
  • Graphics card: Asus GTX 1080Ti OC

Additional context

Profiles stop working after a while

Describe the bug
The earlier bug seems to have returned to me after I rebooted (due to installing an audio driver, Creative Sound BlasterX G6)
After 1.0.5 was released I set the logging to debug to ensure that if the bug comes back, I could provide more information for a fix. At first I thought this was caused by the computer rebooting, but after a manual reboot the newly created profile works just fine.

To Reproduce
Steps to reproduce the behaviour:

  1. Create a profile
  2. Wait a couple of days
  3. Profile cannot be used ("This Display Profile can't be used as not all Displays are connected.")

Expected behaviour
Profile should work.

Screenshots
image

Reporting Logs
After reboot.log
DisplayProfiles_1.0.txt

Enviroment (please complete the following information):
Windows 10 Enterprise with pretty much all recent patches.

Additional context
After some manual debugging, I came across some more information that I'm attaching here. First is the log that I think is not that important, but the second are the three display profiles that I have right now. The v2 profiles are what worked until now, while v3 is the new one. Note that the old profiles have # in the Serial field, while the new profile has the Serial 00-00... in it. This is what is causing the entire bug by the looks of it, as when I copy pasted the v3 segment into the v2 segment in the profile, the profiles work again. I managed to both switch to the Surround v2 and back to Normal v2 profiles without issue.

Possible issue within multiple graphic adapters

Latest Version of DisplayMagigcan does not show the displays connected within a second display adapter. (in my case DisplayLink USB Graphics within USB docker).

Expected behaviour
All displays are shown

Screenshots
1.1.4:
https://www.dropbox.com/s/jpe9j683n726j2y/magic-1_1_4.jpg

latest:
https://www.dropbox.com/s/oi3bj7r7j2oruvq/magic-latest.jpg

  • Windows Version: [Win10]
  • DisplayMagician Version [2.0.1.59]
  • Video Card: [Asus NVIDIA GTX2070 Super]
  • Video Card: [DisplayLink USB Graphics] -> 2 additional displays connected
  • Number and make/model of monitors: [3xAOC 32G2WG3, 1xZOWIE XL LCD (DisplayPort), 1x Benq xl24t, 1x 7' Custom Display (dashboard), 1x Custom Display 10' ]
  • Date of last video driver update: 05.08.2021
  • Date of last windows update: [e.g. 2021-09-19]

DisplayMagician Origin library parsing misses games

Here's the latest trace - DisplayMagician.zip. Some notes I made:
Key line: 2021-10-04 01:00:35.2052|WARN|DisplayMagician.UIForms.GameAdaptor|GameAdapter/GetThumbnail: Exception caused while trying to get the Game Bitmap.

There's nothing installed in GOG at the moment, so no issues there.
The function on the line https://github.com/terrymacdonald/DisplayMagician/blob/main/DisplayMagician/GameLibraries/OriginLibrary.cs#L440 isn't working correctly. A trace output gives the following:
2021-10-03 21:08:51.7955|TRACE|DisplayMagician.GameLibraries.OriginLibrary|OriginLibrary/LoadInstalledGames: Found .mfst files in Local Content Directory C:\ProgramData\Origin\LocalContent: System.String[]
Some of the Origin games use a different XML format for their installerdata.xml. I've included the file for Battlefield 1942 for reference. (not that this is necessarily a game I was wanting to use DM for, just the first one with a suitable example) I've also included the installerdata.xml from NFS Rivals, since that uses a manifestVersion of 3.0.
Some Origin games have their manifests point to the Registry for launcher locations; however, for some games, there is no entry in the 64-bit registry, but it is stored in the WOW6432Node version. I believe this may have been caused by installing via Origin, and not the EA app, a long time ago, when it was only a 32-bit application.

Side note: it would be handy to be able to filter the list when creating a shortcut, or at least to be able to select by typing the game name. Sorry about the messy thought collection, 1am here.

Originally posted by @DragRedSim in #38 (comment)

HDR Support

Any chance of HDR support? The ability to toggle it before and after a game would be fantastic.

165hz Monitors not going back to 165hz when selecting Default profile

Describe the bug
I have two display profiles, a Default (4x Individual screens) and a triple screen profile(3xscreens in NVidia surround and 1xscreen as a second screen). Switching between profiles works perfectly apart from one thing.

When switching to my 3 x surround and 1 x second screen the 3 x surround screens always, correctly, default to the 165hz refresh rate (as it was set up). However, no matter how I set the default profile up, the 3 x screens always default back to 60hz.

To Reproduce
In order to reproduce, you must have 3xscreens that run at an alternate refresh rate to 60hz, preferably 165hz monitors.
Steps to reproduce the behaviour:

  1. Open DisplayMagician
  2. Delete the default profile (3 x single screen profile)
  3. Close DisplayMagician
  4. Open NVidia control panel
  5. Click on Change resolution
  6. Change the refresh rate for each of the monitors to, in my case, 165hz and click apply
  7. Click yes, at the "Apply Settings" dialogue box
  8. Open DisplayMagician
  9. Click on "DisplayProfiles"
  10. Click on "View Current Display"
  11. Save current display as "Default" or whatever name you choose
  12. Select the triple screen (NVidia Surround) profile
  13. Click "Apply"
  14. Check monitors are running at the 165Hz refresh rate (Mine do, so all good up to this point)
  15. In the, still open, DisplayMagician - Display Profiles page, select the "Default" profile
  16. Click "Apply"
  17. Monitors are now running at a 60Hz refresh rate

Expected behaviour
When setting up the profile the profile should remember the refresh rate set in the NVidia Control Panel setting, in my case, always 165Hz.

Screenshots
N/A (I can do a video if needed)

Reporting Logs
N/A - if required let me know and I'll get the logs attached

Environment (please complete the following information):

  • Windows Version: 21H1 (OS Build 19043.1165)
  • DisplayMagician Version: 1.1.4.0
  • Video Card: MSI GeForce RTX 3080 Ti SUPRIM X 12GB
  • Number and make/model of monitors: 3xMSI MAG322CQR and 1xBenQ PD3200U (all running at 1440)
  • Date of last video driver update: 2021-08-10 (471.68)
  • Date of last windows update: 2021-08

Additional context
This is the first time I have noticed this issue, else would have reported it a lot earlier. I could never figure out why, when enabling vsync, my frames ended up being capped at 60fps and with vsync turned off, the fps was well over 165fps (single screen FPS games). I decided to do a lot of testing and found the above.

Please do let me know if there is any further info you'd like, I'd be more than happy to provide it.

Hopefully, this is an easy fix as I am absolutely loving DisplayMagician.

Quadro Mosaic Profile Error

Hi, having trouble getting surround (mosaic) to enable with nvidia Quadro RTX 4000.

I am not sure because Quadro card doesnt specifically have nvidia surround, its called Mosaic. If this could be causing an issue?

My display profile is saved but when i try enable it. the adjusting display devices countdown closes out with 9 seconds to go and changes are not applied.

Windows 11 and Taskbar

I have a problem after updating to Windows 11.
If i switch back from Nvidia surround to normal mode with Triple Screens, sometimes the Taskbar is on top of the main screen. It doent happens every time. But it is tricky, cause in Windows 11 you can choose the taskbar be on top or bottom.

Günter

ArgumentOutOfRangeException when creating a new game profile

Describe the bug
Unhandled exception when adding a new game profile.

To Reproduce
Steps to reproduce the behaviour:

  1. Open Application Window
  2. Click on 'Game Shortcuts'
  3. Click on 'New'
  4. See error

Expected behaviour
"Wizard" for adding a new game shortcut opens

Reporting Logs
As this does not relate to the graphics/monitoring configuration of the system, I do not provide an "Helios" log file..

The message windows says:
System.ArgumentOutOfRangeException: Das angegebene Argument liegt außerhalb des gültigen Wertebereichs. Parametername: i bei System.Text.RegularExpressions.MatchCollection.get_Item(Int32 i) bei DisplayMagician.GameLibraries.UplayLibrary.LoadInstalledGames() in H:\vscode-projects\DisplayMagician\DisplayMagician\GameLibraries\UplayLibrary.cs:Zeile 591. bei DisplayMagician.GameLibraries.UplayLibrary.get_AllInstalledGames() in H:\vscode-projects\DisplayMagician\DisplayMagician\GameLibraries\UplayLibrary.cs:Zeile 92. bei DisplayMagician.UIForms.ShortcutForm.ShortcutForm_Load(Object sender, EventArgs e) in H:\vscode-projects\DisplayMagician\DisplayMagician\UIForms\ShortcutForm.cs:Zeile 928. bei System.Windows.Forms.Form.OnLoad(EventArgs e) bei System.Windows.Forms.Form.OnCreateControl() bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) bei System.Windows.Forms.Control.CreateControl() bei System.Windows.Forms.Control.WmShowWindow(Message& m) bei System.Windows.Forms.Control.WndProc(Message& m) bei System.Windows.Forms.Form.WmShowWindow(Message& m) bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Enviroment:

  • Windows Version: Win10
  • Version 1.0.5

Additional context
I was able to work around the error and created a fork and a pull request. It crashes when looking for registry entries for games that are not installed anymore.

DisplayMagician throws Exception and won't start

Describe the bug
When I try to start DisplayMagician, a Fatal Error pops up: "Type initialization Exception caused by: DisplayMagicianShared.ProfileRepository" This happens regardless if NVIDIA Surround is enabled or not.

Maybe this is caused somehow by new NVIDIA Drivers? Just a wild guess. I updated my drivers to Version 466.11

To Reproduce
Steps to reproduce the behaviour:

  1. Install DisplayMagician 1.0.4
  2. App throws Exception at Start

Expected behaviour
DisplayMagician should start without errors.

Screenshots
image

Reporting Logs
If this Logs aren't enough, I will collect the logs later. Here's what I found in DisplayMagician.log

2021-04-17 13:28:52.3568|INFO|DisplayMagician.Program|Starting DisplayMagician v1.0.4.0
2021-04-17 13:28:52.4098|INFO|DisplayMagician.Program|Program/LoadGamesInBackground: Uplay not installed.
2021-04-17 13:28:52.4098|INFO|DisplayMagician.GameLibraries.SteamLibrary|SteamLibrary/SteamLibrary: Steam library is installed in C:\Program Files (x86)\Steam. Found C:\Program Files (x86)\Steam\steam.exe
2021-04-17 13:28:52.4098|INFO|DisplayMagician.Program|Program/LoadGamesInBackground: Loading Installed Steam Games
2021-04-17 13:28:52.6918|INFO|DisplayMagician.GameLibraries.SteamLibrary|SteamLibrary/LoadInstalledGames: Found original steam library C:\Program Files (x86)\Steam
2021-04-17 13:28:52.6918|INFO|DisplayMagician.GameLibraries.SteamLibrary|SteamLibrary/LoadInstalledGames: Found additional steam library E:\SteamLibrary
2021-04-17 13:28:52.7098|INFO|DisplayMagician.GameLibraries.SteamLibrary|SteamLibrary/LoadInstalledGames: Found 17 installed Steam games
2021-04-17 13:28:52.7098|INFO|DisplayMagician.Program|Program/LoadGamesInBackground: Loaded all Installed Steam Games (found 17)
2021-04-17 13:28:52.7779|ERROR|DisplayMagician.Program|Program/StartUpNormally top level exception: Der Typeninitialisierer für "DisplayMagicianShared.ProfileRepository" hat eine Ausnahme verursacht.:    bei DisplayMagicianShared.ProfileRepository.get_AllProfiles()
   bei DisplayMagician.UIForms.MainForm.RefreshNotifyIconMenus() in H:\vscode-projects\DisplayMagician\DisplayMagician\UIForms\MainForm.cs:Zeile 214.
   bei DisplayMagician.UIForms.MainForm..ctor(Form formToOpen) in H:\vscode-projects\DisplayMagician\DisplayMagician\UIForms\MainForm.cs:Zeile 34.
   bei DisplayMagician.Program.StartUpApplication() in H:\vscode-projects\DisplayMagician\DisplayMagician\Program.cs:Zeile 475. - NvAPIWrapper.Native.Exceptions.NVIDIAApiException: NVAPI_ERROR
   bei NvAPIWrapper.Native.GPUApi.GetBoardInfo(PhysicalGPUHandle gpuHandle)
   bei NvAPIWrapper.GPU.PhysicalGPU.get_Board()
   bei DisplayMagicianShared.ProfileRepository.GenerateProfileDisplayIdentifiers() in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:Zeile 810.
   bei DisplayMagicianShared.ProfileItem.Equals(ProfileItem other) in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileItem.cs:Zeile 338.
   bei DisplayMagicianShared.ProfileRepository.IsActiveProfile(ProfileItem profile) in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:Zeile 589.
   bei DisplayMagicianShared.ProfileRepository.LoadProfiles() in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:Zeile 648.
   bei DisplayMagicianShared.ProfileRepository..cctor() in H:\vscode-projects\DisplayMagician\DisplayMagicianShared\ProfileRepository.cs:Zeile 80.

Enviroment (please complete the following information):

  • Windows Version: Windows 10 Home 20H2 Build 19042.928
  • NVIDIA Driver 466.11 (RTX 2080ti)
  • DisplayMagician Version 1.0.4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.