Current version

v1.9.11 (stable)
v1.10.3 (exp.)

Navigation

Main page
Archived news
Downloads
Documentation
   Capture
   Compiling
   Processing
   Crashes
Features
Filters
Plugin SDK
Knowledge base
Donate
Contact info
Forum
 
Other projects
   Altirra

Search

Archives

01 May - 31 May 2013
01 Mar - 31 Mar 2013
01 Feb - 29 Feb 2013
01 Dec - 31 Dec 2012
01 Nov - 30 Nov 2012
01 Oct - 31 Oct 2012
01 Sep - 30 Sep 2012
01 Aug - 31 Aug 2012
01 June - 30 June 2012
01 May - 31 May 2012
01 Apr - 30 Apr 2012
01 Dec - 31 Dec 2011
01 Nov - 30 Nov 2011
01 Oct - 31 Oct 2011
01 Sep - 30 Sep 2011
01 Aug - 31 Aug 2011
01 Jul - 31 Jul 2011
01 June - 30 June 2011
01 May - 31 May 2011
01 Apr - 30 Apr 2011
01 Mar - 31 Mar 2011
01 Feb - 29 Feb 2011
01 Jan - 31 Jan 2011
01 Dec - 31 Dec 2010
01 Nov - 30 Nov 2010
01 Oct - 31 Oct 2010
01 Sep - 30 Sep 2010
01 Aug - 31 Aug 2010
01 Jul - 31 Jul 2010
01 June - 30 June 2010
01 May - 31 May 2010
01 Apr - 30 Apr 2010
01 Mar - 31 Mar 2010
01 Feb - 29 Feb 2010
01 Jan - 31 Jan 2010
01 Dec - 31 Dec 2009
01 Nov - 30 Nov 2009
01 Oct - 31 Oct 2009
01 Sep - 30 Sep 2009
01 Aug - 31 Aug 2009
01 Jul - 31 Jul 2009
01 June - 30 June 2009
01 May - 31 May 2009
01 Apr - 30 Apr 2009
01 Mar - 31 Mar 2009
01 Feb - 29 Feb 2009
01 Jan - 31 Jan 2009
01 Dec - 31 Dec 2008
01 Nov - 30 Nov 2008
01 Oct - 31 Oct 2008
01 Sep - 30 Sep 2008
01 Aug - 31 Aug 2008
01 Jul - 31 Jul 2008
01 June - 30 June 2008
01 May - 31 May 2008
01 Apr - 30 Apr 2008
01 Mar - 31 Mar 2008
01 Feb - 29 Feb 2008
01 Jan - 31 Jan 2008
01 Dec - 31 Dec 2007
01 Nov - 30 Nov 2007
01 Oct - 31 Oct 2007
01 Sep - 30 Sep 2007
01 Aug - 31 Aug 2007
01 Jul - 31 Jul 2007
01 June - 30 June 2007
01 May - 31 May 2007
01 Apr - 30 Apr 2007
01 Mar - 31 Mar 2007
01 Feb - 29 Feb 2007
01 Jan - 31 Jan 2007
01 Dec - 31 Dec 2006
01 Nov - 30 Nov 2006
01 Oct - 31 Oct 2006
01 Sep - 30 Sep 2006
01 Aug - 31 Aug 2006
01 Jul - 31 Jul 2006
01 June - 30 June 2006
01 May - 31 May 2006
01 Apr - 30 Apr 2006
01 Mar - 31 Mar 2006
01 Feb - 29 Feb 2006
01 Jan - 31 Jan 2006
01 Dec - 31 Dec 2005
01 Nov - 30 Nov 2005
01 Oct - 31 Oct 2005
01 Sep - 30 Sep 2005
01 Aug - 31 Aug 2005
01 Jul - 31 Jul 2005
01 June - 30 June 2005
01 May - 31 May 2005
01 Apr - 30 Apr 2005
01 Mar - 31 Mar 2005
01 Feb - 29 Feb 2005
01 Jan - 31 Jan 2005
01 Dec - 31 Dec 2004
01 Nov - 30 Nov 2004
01 Oct - 31 Oct 2004
01 Sep - 30 Sep 2004
01 Aug - 31 Aug 2004

Stuff

Powered by Pivot  
XML: RSS feed 
XML: Atom feed 

§ How to recover an off-screen window

For a long time, I've been a single-monitor user, mainly because I've usually only had one monitor to use. This has only been reinforced by my transition to laptops. I'd tried dual monitors on a desktop before, and didn't like it at first, but once I figured out that you can run two monitors without spanning them -- which often requires a reboot to get working since monitor detection in Windows is lame -- I've gotten accustomed to it. Span mode sucks with two monitors because everything tends to pop up exactly between the monitors. With plain old two-monitor mode, though, windows maximize on a per monitor basis and everything works a bit better.

Except when you enable or disable monitors.

Applications like to save their window location on exit, because users don't like to constantly have to resize the window on startup. (I grudgingly fixed this in VirtualDub a while back.) The tricky part is making sure that the application never ends up trying to restore a position off-screen, because it's almost impossible to get the window back. You're supposed to use SetWindowPlacement() to restore the window position, as it automatically adjusts the window position if this were the case. Frequently applications don't do this, though, and thus you get a bunch of likely failure cases, all of which result in the app restoring off-screen: the desktop resolution is lowered, a monitor is disabled or moved, or the app uses the wrong function and derives deep negative coordinates from a minimized window. As I tend to use Remote Desktop and do resolution testing a lot, I often hit these cases. WinAmp's a frequent victim.

There is a trick to rescuing such windows, though, as long as they appear on the taskbar or can otherwise be selected. I used to do Minimize All + Undo Minimize All (now Show the Desktop + Show Open Windows), but that wasn't very reliable. I've since found a better way to do it:

The window should then pop on-screen and attach to the mouse, where it can then be dropped at a usable location via left-click.

Comments

Comments posted:


It's a surprisingly unintuitive method, but unfortunately it's the only one I've found that works. Thanks for sharing with everyone.

Michael - 26 10 08 - 00:29


Temporarily resizing the taskbar (unlocking it first as necessary) usually works for me. This should change the workspace area and get Windows to move all windows back into the workspace.

I've also written a program to do it on demand (i.e., I run it to force all windows back onscreen; there's no background process running or anything).

James (link) - 26 10 08 - 02:07


That's always been the second most irritating thing about using dual monitors.
The first being fullscreen apps that don't capture the mouse (I am thankful for MouseJail which provides that functionality to most games I run it on)

Bob - 26 10 08 - 05:29


The control/mixer application for E-MU sound cards (Patch Mix DSP) has frequently been a victim of sitting outside the screen for me, but the trick you mention here doesn't work for it, simply because it doesn't have a working system menu. It's greatly annoying!
(Yet another reason I hate "skinned" applications. Just give me plain window decorations, please.)

jfs - 26 10 08 - 06:53


If you do use SetWindowPlacement be careful. It should only be called with values returned from GetWindowPlacement. It uses workspace coordinates, not screen coordinates so if you pass it coordinates from GetWindowPos or similar functions then your windows will start moving around on systems that have something docked to the top of the desktop. (e.g. Taskbar or a toolbar at the top of the primary monitor.)

Leo Davidson (link) - 26 10 08 - 07:12


A classic trick that saved my behind lots of times (usually when dx demos/games crash and leave you with a 320x200x4bpp screen :))

ggn - 26 10 08 - 13:32


I always wondered why the Move option from the system menu requires tapping an arrow key before it starts working - and it's been this way forever (I remember using this in Win3.1 a few times).

Also, PatchMIX DSP has hideous skins.

ender - 26 10 08 - 14:22


The real pain in the *** is when it is a child dialog, with no taskbar icon, such as a find dialog in a text editor or some such. I wrote a partially working app that uses EnumWindows, EnumChildWindows, GetWindowText and SetWindowPos to find the misplaced window and move it. I've also used Perl and 'Win32::GuiTest qw(FindWindowLike GetParent GetWindowText GetClassName SetWindowPos GetWindowRect)' to do the same thing. FindWindowLike will enumerate through all windows + child windows and can use a partial window title as a regex to narrow down the search.

tateu - 27 10 08 - 01:49


Congratulations! Seven damn pages, and finally a solution that works, by FORCING programs to have a Move function, even when they don't!

Required Name - 30 10 08 - 18:23


For windows that don't show up on the taskbar (some dialog windows), you could press Alt + Tab to cycle through windows, picking the one that doesn't appear on the taskbar, then Alt + Spacebar, select Move and tap an arrow key to move it.

Guest - 03 11 08 - 12:08


Yep, it's annoying and strange the way you have to 'bump' the window with arrow keys before the mouse will do everything.

But it's worse when some clever-trousers skinned application decides to get rid of the normal window-icon/menu so that you can't get 'Move' on the taskbar menu. A pox on apps with non-standard window furniture!

bobince (link) - 05 11 08 - 15:57


Thanks a lot for this great great trick!

Electronick (link) - 16 02 09 - 05:18


This worked for no Move option for item that was in the taskbar: "For windows that don't show up on the taskbar (some dialog windows), you could press Alt + Tab to cycle through windows, picking the one that doesn't appear on the taskbar, then Alt + Spacebar, select Move and tap an arrow key to move it."

Thanks!

Chuck - 27 08 10 - 00:56


My iTunes album art viewer is back! Thanks!!!

swiftsnake - 27 10 10 - 10:20


Brilliant! I've been trying to figure out how to do this for a long time.

Dan Smith - 12 11 10 - 03:48


This is a stupidly simple fix to an infuriating problem. Thanks much for the info!

alex - 20 04 11 - 00:12


Nice one man thanks!

Skydree - 03 11 11 - 19:02


Hit this problem today, googled and found your page. The alt-space trick worked for me! Thanks!

Julie - 08 11 11 - 04:31


Thank you,

I've had this problem with just one program for months, but never really knew what to type in to Google to find the solution.
It's been driving me mad only having the option of maximizing or minimizing vua the taskbar

TJ - 06 12 11 - 09:19


The alt-space trick is ROCKIN!! I knew how to fix the problem when the window had a taskbar icon but had no idea what to do if it didn't. Googled the problem and found this page! Alt+Space RULES!!

Jonathon - 11 04 12 - 17:45


Brilliant - I have had this problem with SAS/Edit/Find for about a year. The solution is not exactly intuitive is it?

MikeC - 13 06 12 - 23:12


Hey guys,

This method is a bit silly compared to simply selecting the icon on the task bar, then hold down the Windows and Shift keys and tap the Left or Right arrow keys.

This will tell Windows 7 to kick the window over to another monitor, which will put it back within bounds of your current display (or another attached display if you run more than one monitor on your PC). If it doesn't work on the first try, try clicking the icon again and repeating the steps-- as Windows has to think the window is being display as opposed to minimized for this to function.

BrianK - 13 07 12 - 07:28


Thank-you for hint. I started using extra monitor and sometimes hit this tedious bug.

Paolo573229 - 19 09 12 - 18:38


there is a useful piece of Nvidia software, as improbable this may sound ;o)
if you have an nvidia card an nview is installed you get several very useful functions. you can, as long as the program appears on the taskbar, simply right click this tab and then use the submenu of nview. it will allow you to send the application to a certain display or desktop ! it's one click and you get the window back.
you can also assign the default startup desktop for any program by right clicking on the icon.
all this is of course nvidia only.

Henry - 03 10 12 - 00:00


Thanks for the Atl+Space suggestion. One thing you may have to do is Alt+Space, then press the M key, then use the arrow keys.

LK - 31 10 12 - 03:12


Thanks for the tips, especially to BrianK. The joy of working with dual monitor setup was just restored :)

Kimble - 31 10 12 - 23:31


This tip is brilliant. Nice that Windows still has these keyboard shortcuts for "emergencies". Thanks! Tom

Tom - 20 01 13 - 03:11


If the above doesn't work you could use an app. E.g.:

1) Download the WinLister application from here

2) Run WinLister as Administrator and select the window you wish to move back on Screen.
Not running as administrator will not give the application the ability to move the windows for you.

3) Right click and select “Center Selected Windows

Source: http://mbakopoulos.wordpress.com/2013/02..

Brian - 14 02 13 - 08:46


just figured out an easier solution for w7.
right click desktop
select "screen resolution"
go to the "multiple displays" drop down bar and select "show desktop only on 1" (or 2, whichever you are using)
select "ok" or "apply" then you will see it snap to your main screen
answer "keep settings" and you are good to go

in the drop down bar, set the process back to "extend displays" if you need to revert the setting

lee - 17 03 13 - 00:24

Comment form


Please keep comments on-topic for this entry. If you have unrelated comments about VirtualDub, the forum is a better place to post them.
Name:  
Remember personal info?

Email (Optional):
Your email address is only revealed to the blog owner and is not shown to the public.
URL (Optional):
Comment: /

An authentication dialog may appear when you click Post Comment. Simply type in "post" as the user and "now" as the password. I have had to do this to stop automated comment spam.



Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.