Sizer 3.4 Development

Sizer 3.4

This page holds information and work-in-progress downloads for the new version of Sizer. I'm pretty slow at releasing proper versions. This is partly because I don't like to rush things; and partly because I find it difficult to write things up and put them on the web.

I know a lot of people are very keen to get 64 bit support so I'm posting work in progress versions here. I suspect many users are happy to sacrifice a bit of stability to get their hands on a bleeding edge version. These versions come with the following caveats:

  • Incomplete. See notes in the Features section for details what's been done.
  • No installer. It's only available as a zip package. Just unzip all the files and run sizer.exe
  • May have bugs. Hopefully these versions are stable but testing will have been limited.
  • No docs.


  • 21 July 2013: Sizer 3.4 Dev Build 482. Add menu option to add a new configuration setting based on the size/position of the current window. Add fix for stickiness and/or crashes with Excel and Word 2010.
  • 27 May 2013: Sizer 3.4 Dev Build 477. Include Firefox right click workaround. Include option to resize by adjusting corner/edge opposite to cursor.
  • 25 July 2012: Sizer 3.4 Dev Build 465. Fix bug with system menu resizing in v462. Minor tweaks to system tray resizing.
  • 24 July 2012: Sizer 3.4 Dev Build 462. Fix multi-monitor issues with interactive and system tray sizing. Show hotkey shortcuts in popup menus.
  • 23 July 2012: Sizer 3.4 Dev Build 459. First pass at multi-monitor support. Can select which monitor to move a window to during resizing.
  • 19 July 2012: Sizer 3.4 Dev Build 455. Save configuration settings to file rather than registry.
  • 29 Sept 2011: Sizer 3.4 Dev Build 426. Rework config dialog box to use a list view with columns for name, width, height and hotkey name.
  • 26 Sept 2011: Sizer 3.4 Dev Build 422


The exact feature set of Version 3.4 may change. Depending on how long things take I might drop features in order to release a proper version. I've split features into two sections: things I will definitely put in and things I hope to put in. The comments in green are things that have been done; the stuff in red is still to do.

Must haves

  • 64 bit support. Sizer 3.4 is all about 64 bit support. I get lots of emails asking for this and a few offering help. Without going into lot of technical details this is tricky task. It's complex because Sizer must integrate with both full 64 bit applications and 32 bit applications (which, noticeably to most users, run under an emulation layer).
    • Did some experiments and proved the MSDN documentation on Windows hooks is wrong. As part of my day job I went to a conference and managed to collar Jeffrey Richter and ask a few questions. (Jeff wrote the seminal book "Advanced Windows" which introduced me to windows hooks.) He was extremely helpful explaining why things are the way they are. Unfortunately his advice turned into a dead-end but I owe him a bit thank you.
    • Did more experiments are things are stranger than I first thought. The order things happen is important and there's no way I can control what other program do before Sizer is run. So after a bit of thought have devised another approach.
    • Implemented the 64-bit part of Sizer and it everything seems to work.
    • Made a few tweaks to get things working on XP64 as well.
    • TODO: More testing on x64, try all the poorly written applications like: Firefox, iTunes and Acrobat.
    • TODO: Confirm changes work on older OSes. I'll do XP and W2K but won't bother with Win9x or NT4.
    • Have done some testing on W2K and found the program didn't even run! This is in an issue with Visual Studio 2010 which is fixed now.
  • Hot-Key function. I've always used Hot Key Plus to to resize windows but I appreciate this approach is limited. Lots of people ask for this feature but I've always resisted. It's not the number of requests but the weight of poorly written application that's put this on the must-have list. I'll save the rant for another time but I get a lots of “bug” reports for Sizer where the bug is actually another program. To provide a sensible workaround for situations where interactive sizing doesn't, hotkeys are on the must haves.
    • Configuration dialog updated to include hotkey controls.
    • Hot key registration and error messages implemented.
    • TODO: check key handling on non-English OS.
    • Show assigned hot-keys in pop-up menu.
    • Changed configuration dialog to have multi-column list view, one column to show hot-key.

Should haves

  • Multi-monitor awareness.
    • Window can be repositioned relative to a specific monitor. The drop down list shows monitor dimensions and position.
    • Confirmed settings work on 64 bit XP and 32 bit and Win2K.
    • TODO: Confirm assumptions about secondary monitor workarea are correct.
    • TODO: Consider how taskbar interacts with primary monitor and whether to add option to ignore taskbar.
    • TODO: Implement option to allow out of bounds sizing/moving.
    • TODO: Consider adding an 'identify monitor' button.
  • Portable version.
    • Made lots of changes so hook portions don't use registry.
    • An XML file is used to record sizer settings. Sizer works out the location of the XML as follows:
      1. From the command line. If Sizer os started with the a command line like -config filename.xml then filename.xml is used for loading and saving configuration information.
      2. If no command line is specified then it looks for the sizer.xml in the same directory as the sizer.exe executable. If this file exists this is used regardless whether it contains valid XML or not.
      3. If the above step doesn't work then the config file is saved/loaded from the local application data directory. On Win7 this will be in the form c:\Users\UserName\AppData\Roaming\Sizer\sizer.xml.
    • I've decided to leave the mapping of key codes as an open problem. The effect on Sizer is unlikely to be major and it only affects uncommon key combinations and only if the config file is exchanged between keyboard with different languages. I've yet to come up with an example that causes Sizer problems, but I'm sure problem keys to do exist. The problem stems from using virtual key codes (which are portable) whereas the name of the key can only be obtained using a scan code (which depends on the keyboard installed). There's no mechanism to work with extended scan codes so for example right arrow could be mixed up with with Num-6. Sizer records information that might be non-portable is such situations. This works between machines for me but I've only tested on UK keyboards.
  • Firefox 6 workaround. I don't know what it is with Mozilla developers but they simply can't accept the way Windows works and insist on using undocumented routines or non-standard mechanisms. Firefox 6 throws up yet another problem with non-client Windows messages which means you have to double right-click to get the Sizer popup.
    • Used Spy++ to figure out why Firefox 6.0 is broken. 99% sure there's a workaround that's a bit clumsy but shouldn't break other applications.
    • Implemented workaround in devbuild 477.
  • Use current window settings as new entry. Have option to include a Sizer menu item that picks up the current size and position and populates the config dialog box.
    • Initial implementation in devbuild 482.