Where’s my window?

On Windows, if you regularly change screen resolution or size, perhaps by accessing a machine remotely, you might find some of your application windows are no longer visible; they’re positioned outside of the visible display area. If you can’t see the window, it can be a little difficult to use the application. How can you get that window back?

In most cases – but only only on pre-Vista versions of Windows – it can be easily resolved by right clicking on the task bar icon for the application, selecting Move and then using the cursor keys. This makes the cursor “stick” to the caption of the window, and you can move the mouse (without clicking!) to bring it onto the screen. Clicking releases the window.

You can do it without the mouse, too. Just make sure the window is selected in the task bar (perhaps by using the Windows key and then tabbing to the appropraite icon), then hit Alt-Space, Alt-M, and then using the cursor keys.

The only problem is, some application developers choose to change the system menu – the menu visible from clicking the app’s icon in the top left, or by right-clicking the task bar icon – perhaps deciding for some insane reason not to include the standard Move option (as an aside, this breaks one of the fundamental tenets of usability: don’t change – or in this case, remove – existing, established behaviour). If this is the case, you can instead use a handful of lines of Windows API code to access the window and move it programatically. Here’s the entire code of a program that will do exactly that:


int _tmain(int argc, TCHAR *argv[])
	if (argc < 2)
		_tprintf(_T("usage: mover windowtitle\n"));
		return -1;
	HWND hwnd = FindWindow(NULL, argv[1]);
	if (hwnd)
		SetWindowPos(hwnd, HWND_TOP, 0, 0, 400,400, 0);
		_tprintf(_T("Unable to find window %s\n"), argv[1]);
	return 0;

Compile it up and you can use it as a handy little utility to move arbitrary top level windows, e.g. if you've got regedit running:

mover "Registry Editor"

The only tricky thing is finding the exact title of the window to use. Well, you wouldn't want it to be too easy, would you?

  • What you really need is a button, like on the OS X display preferences panel, that nudges all open windows back onto the screen.

    Maybe hack an all-top-level-windows mode (via EnumWindows) into the mover app?

    – Tim, who logged in from home this morning and had this exact problem

  • OJ

    I hate this issue. So much so that I wrote a small tool which works like Spy++ (just click on the task bar window item) and also allows windows to be enumerated/selected in a list.

    The tool centers the Window on the current Monitor. I haven’t had to use it for a while thankfully.