Omnius
Members-
Posts
22 -
Joined
-
Last visited
Omnius's Achievements
-
If you hit Windows Key + Tab you will get a view that shows all of the visible windows for each display on the current desktop. If you right-click on the window you want to move there is a context menu item "Move To" which allows you to move an application to any other desktop. You can also mark an application as appearing on all desktops. You can also drag-n-drop a window onto another desktop. Here is a screenshot of moving an Excel window to a different desktop with the context menu:
-
Sorry for the delay. Looking at your screen shot there shouldn't be an empty spot in the list (you have an empty spot above the three monitors you are showing, refer to the screen shots in the initial message in this thread). I assume that means that your monitor 4 isn't providing a "friendly name" to display in the list. I've not run into that, all the "real" monitors I've tested with and the couple of panel monitors have all provided names in the list. What happens for you if you choose the blank first monitor? Does it throw an error or does it just not work?
-
Chimaera, Sorry for the delay, I've had a busy couple of weeks. What you're describing is a well-known problem with Windows. It's just trying to be helpful by moving applications. If you want to keep the sensor panel up when the big monitor is off, I would think enabling the Aida64 feature "Keep SensorPanel the topmost window (always on top)" would do the trick. If in these situations you don't care about keeping the sensor panel displayed, you could just turn off the small display first, then turn off the big display. That way Windows won't throw all the windows around. You'll have to also turn on the big display first when returning. Or you could put them both on the same power bar and always turn them both off together. One thought is that you could switch to another desktop (one with no active windows) before turning off the monitor. The sensor panel will still show on the little monitor on the second desktop and (I'm pretty sure) all of the applications on the first desktop won't move unless you switch desktops back (which you wouldn't do without turning the big monitor back on). You can do this with "Ctrl-Windows-Right Arrow" and back again with "Ctrl-Windows-Left Arrow" (use Ctrl-Windows-D to create a new desktop if you only have one). You'll have to enable multiple desktops first. Considering that this is a "feature" of Windows, I don't know of anything I can do in my little application to help you.
-
I don't know if they need to go as far as integrating with a scripting language. Just the ability to add a string format (ala printf like "%4.2f", "%'d", or "%05d") to any numeric output would be a great thing. It would likely require being able to set the locale though, to get the formatting right for everyone. You could easily create a Regular Expression to only allow a specific subset of printf format strings (as some of them might break things). Heck, just being able to put commas and control the number of decimal places would be terrific, even if these were just fields.
-
Chimaera, Thanks for the report, I haven't tested this on Windows 11 at all. The error message that you are getting obviously isn't very helpful, but basically what that code is doing is it's excluding any monitors that are not extending the desktop (the other main choice is to mirror one of the other monitors). It makes me wonder if Windows 11 has added more topology types (or changed the way topology is reported). From your description I am assuming that you have three monitors? One of which is the sensor panel monitor? When you turn off the primary monitor, which other monitor becomes the primary (hopefully not the sensor panel)? Do you have at least two monitors with one set as the primary and the other set to extend the desktop? Do you have any monitors set to mirror another monitor? When I get a chance I'll put some time into making that error more useful and then you can try it again.
-
I see that this is a five-year-old thread, but I'm surprised you haven't revisited this. I'm not sure what technology you used when writing the sensor panel application, but there are libraries out there for pretty much any framework you might be using to support animated GIF, PNG, WebP, AVIF, and/or FLIF images. You talk about being tied to the refresh rate of the controls on the page, but where does it say you can't create a new thread specifically to animate the graphics (depending on the library, it might all be taken care of for you anyway). One thing you might consider is allowing a single HTML page to be the background for the sensor panel (the same way I currently use a PNG file as the background). You would create a single web control and pass it the path to a local HTML file (which could then pull JavaScript, images, etc. from local or remote sources). The web control uses a web browser to paint (which web browser depends on the control and the OS). This would allow us to not only have animated images, but dynamic pages that can pull in information from the Internet (like weather information). You can then overlay the same stuff you have now on top of the web page.
-
There is probably a better place to post your question than as a reply to this thread. However, if you're talking about adding an animated GIF to the sensor panel I've seen people discussing that topic and Aida64 has said they don't plan to support animated GIFs. The explanation was something about it interfering with the sensor panel update speed (which I don't completely buy since having a separate thread just for animating gifs wouldn't be rocket science). Here is a discussion about animated GIFs .
-
OK, Beta testers, I've updated the program to properly handle multiple video cards as well as mirrored monitors. Please download the zip file again from the location previously shared and overwrite your previous copy. Please do let me know if you had any issues previously that this release fixes, or if you have any new problems with this version. Thanks for helping! For those wondering what the problem was and how I resolved it, read on. There are two completely separate ways to iterate through monitors on the system in C#. The one that is easy is to use System.Windows.Forms.Screen.AllScreens. This is a dead simple interface that probably is more than enough for many programs, but not when we are trying to watch screen configurations dynamically. For example, there is nothing in this library about the interfaces, or about monitors that are mirrored. This list does provide some useful abstractions though, that saved me some time, so I really wanted to use this instead of doing the work again. The second way is to call QueryDisplayConfig which provides detailed information about the entire monitor configuration. It separates out the "source," which is a logical monitor that programs write to, from the "target," which is a physical screen. The same source can be directed at multiple targets (for example in the case of one monitor mirrored with another). This has a lot of esoteric information about the system (like whether a monitor is rotated) that we don't care about, and unfortunately there is no key information that is shared with the Screen library above (the key is called the "AdapterId" and has two parts, the LUID (which corresponds to the actual video card to which the monitor is attached) and the ID (a unique number relative to the LUID). You need both of these to uniquely identify an actual monitor. Unfortunately, neither the LUID or the ID is present in the Screen library (they abstracted it away, unfortunately). So, to combine these you are left with having to find the target using heuristics (the device size and offset). Fortunately, aside from mirroring, monitors cannot logically overlap in Windows, so it is possible to identify these exactly (see the code on GitHub to see how I combined these into a single overall structure). Another problem was that I wasn't properly refreshing the monitor information when the monitor profile changed (in fact, I wasn't detecting all the ways the monitor profile could change). I think I'm now doing that, though I may be refreshing it more often than necessary. Fortunately, the actual number of monitors can't be that big a number, so the refresh is very quick, almost unnoticeable on a reasonable computer. Do let me know if you notice delays in updating the UI. As to mirroring, I wrote some heuristics there as well, trying to guess what monitor to choose when switching from mirrored monitors to non-mirrored monitors. I needed this myself since I my sensor panel is not actually visible to me when I'm sitting at my desk, so to work on the sensor panel the easy thing is to mirror the sensor panel to one of my other monitors, fix it, then break the monitors back apart.
-
Update: If you have two or more video cards then you might see some strange behavior. It turns out that I was making the assumption that two Windows API calls will return the monitors in the same order, but this appears to only be true if there is a single video card. If you have two or more (including one external and one integrated) then you may get the weird effect that you pick monitor A and it maps the sensor panel to monitor D, but forces all applications to vacate monitor A. I'm still working on how to join those two API calls properly, but if you see this effect, please do let me know so that I can validate the above assumption and please have patience while I figure out the right fix.
-
A general update. The program has one outstanding bug that I'm working on and that is that it doesn't exit properly when windows is shutting down or rebooting. It blocks it by putting up an "Are you sure?" dialog. Hopefully I'll be able to get to updating it to fix this bug soon. I've been a bit distracted since I'm building a new computer. Anyone else have any bugs or suggestions to report?
-
Sorry I was so late responding, I never got an e-mail saying that you wrote, which is strange. Thinking about your situation, I might be able to provide an offset in the program, to that it will force the panel to line up with a specific pixel in the panel matched with the upper left corner of the monitor. I'll play with that. If you could send me a screen shot or an actual photo of your monitor setup showing what you are trying to do, that might help. Omnius
-
David, If I understand you, you have created a sensor panel that spans multiple monitors? My tool may not help you then because it is definitely assuming that the panel is on a single monitor. I wonder if you can rename and run Aida64 twice (seems like I read a forum message somewhere saying that there is a way to run it more than once). My program cannot be run more than once, at this point. Omnius
-
I've upgraded the application again, it now also restores the sensor panel when the user logs in or unlocks Windows (if the window configuration changed while the user wasn't logged in the application wasn't able to catch it and fix the window until the user logged back in). You can get it from the original location I sent you. Anyone else who would like to try the application, please reply here and I'll contact you directly. Omnius
-
OK, I've upgraded the application. Note the new checkbox on the bottom. If you select that, then it will move any applications off the sensor panel. It will move them to the monitor that (according to the current monitor profile) is closest to the sensor panel. So, if you want the applications to move to a specific monitor, make sure the sensor panel is closest to that monitor in the profile. The program will keep the sensor panel glued to the monitor no matter where you move it in the profile. If you don't set a refresh rate it will only check for rogue applications when it sees a change to the monitor profile, which probably isn't often enough for that feature to be useful. The work it does is very light-weight so setting it to 10 seconds isn't going to be something you will notice on your computer (if you do, let me know). The source is updated in the repo and the zip file that I gave to the beta testers has been updated on the download server, so please download the zip again if you want to try this new feature. Enjoy, Omnius