Monthly Archives: November 2010

Window Clippings 3 is here!

I’m very happy to announce that Window Clippings 3 has been released! It supports many new features and improvements that allow you to take that perfect screenshot with ease. Although there are many new features in this release I have worked very hard to make this version even simpler to use.

I’m still working on the documentation. You can visit http://windowclippings.com/help and browse through a growing collection of tutorials and other documentation. In the meantime here is a short list of some of the new features in no particular order:

  • Perfectly capture elevated windows
  • Automatically capture active window or active applications
  • Capture maximized windows
  • Capture Windows taskbar, Start menu, jump lists, etc.
  • Create freehand and elliptical selections
  • Much better support for popups, menus, etc.
  • Support sending screenshots to OneNote 2010
  • Save to disk action improvements
  • Copy to clipboard action improvements
  • Add watermarks to screenshots
  • Resize screenshots
  • More powerful image processing
  • Custom file naming
  • Create favorites of your preferred settings
  • Command line capture
  • Support lower color depth display configurations
  • Alpha blending capture improvements
  • Installer

Please give it a try today:

http://windowclippings.com

As I mentioned before, I’m offering a free upgrade to anyone who bought a 2.x license in the past. I’m hoping to get those emails out this week some time, but if you’re in a hurry or changed your email address just let me know.

Window Clippings 3 is coming on Monday!

It’s been very quiet on my blog over the last few weeks. I’ve been pushing very hard to get this release out the door this month as I’d hoped back in August when I started this project. The good news is that unless something goes terribly wrong, Window Clippings 3 will be released on Monday. I’m doing my final testing sweep and website upgrade this weekend.

There are many new features in this release that I never got around to writing about in my series of “looking forward” articles. I’ve been putting my writing energy into a growing list of tutorials that will be available alongside Window Clippings 3.

As with previous versions, Window Clippings 3 is all about providing the very best screen capture for Windows. Come back on Monday to be one of the first to give it a try!

Finally, as a thank you for all of the support Window Clippings has received I’m offering a free upgrade to anyone who bought a 2.x license in the past. I’m hoping to get those emails out next week some time. Of course the only record I have of existing users is the email address originally used for the purchase. If you don’t hear from me or have changed your email address then feel free to contact me including whatever information you can to help me track down your license.

Elsewhere on the Web

I finally took the plunge and registered with Stack Overflow. Although I don’t have time to answer questions all day long I’m going to try and spend a few minutes and answer a question or two every morning. So far I have a reputation of 1. Hmm…

Also if you missed it you can also follow me on Twitter. I’m still trying to figure out how this is actually useful as I don’t have time to read all those tweets. I’m looking at you @paulmwatson. I think all my problems would go away if I had a Windows Phone. :)

Looking Forward to Window Clippings 3: Copy to clipboard

In my previous post about the “Save to disk” action I meant to show you how you can edit actions but it completely slipped my mind. On the Actions tab you can simply double click an action to open its editor. Alternatively you can right click an action or output for more options.

Edit

The “Copy to clipboard” action also received a nice upgrade. In previous versions the action simply copied the image to the clipboard using the universally supported bitmap format. Unfortunately this format doesn’t support 32 bpp images so you end up losing the alpha channel. If you want to paste an image that retains the alpha channel and the application you’re pasting it into supports it then you can select “Copy as PNG image” instead.

Copy to clipboard

Here is an example of a screenshot produced by the “Copy to clipboard” action that I then pasted into OneNote. If you look carefully you should be able to see the OneNote grid lines even through the window frame in the image.

OneNote

Check out the previous highlights:

Silencing the Windows Installer Restart Manager

This is the story of the day I discovered that there’s something simple about Windows Installer.

When it comes to creating installer packages, the thought of using the Windows Installer service fills the average developer with dread. Calling Windows Installer unapproachable and unintuitive is an understatement. It is only thanks to Rob Mensching and the gang working on the Windows Installer XML (WiX) toolkit that it is even approachable. Unfortunately the progress on WiX is slow, although admittedly not quite as slow as Window Clippings. As John Robbins said to me the other day, don’t get me started on how no one at Microsoft cares about install and just leaves poor Rob out there on his own. :)

I have tried to streamline the Window Clippings installer such that all you see is a simple progress window (and possibly a security prompt) which takes just a few seconds to complete.

install

That’s it. No wizard with ten pages of meaningless junk you have to get through. It just gets on with it so that you can get on with using Window Clippings.

To streamline the update process I made sure that Window Clippings supports the Restart Manager (RM) so that it can be automatically restarted via the RM API that the Windows Installer service uses. For some reason the Window Installer service doesn’t trust the Restart Manager to do the right thing and wants the user to take some responsibility, so it throws this window at the user:

prompt

Of course I’ve already made sure that Window Clippings can be safely restarted so I really didn’t want this ugly prompt to stop the update process in its tracks.

I had read the page in the Windows Installer SDK about using Windows Installer with the Restart Manager and figured I could use the MsiSetExternalUI function to suppress the prompt. But then I read the fineprint:

MsiSetExternalUI should only be called from a Bootstrapping application. You cannot call MsiSetExternalUI from a custom action.

It’s at this point that I realized that WiX can’t help me with this problem and I was filled with trepidation. I asked John and he mentioned the work on Burn. That sounded complicated. After a while I collected myself and turned back to the Windows Installer SDK and realized something: not everything about Windows Installer is complicated! I know, it’s hard to believe but it’s true. Writing a bootstrapping application for Windows Installer can, at least for my simple needs, be accomplished with very little code. The MsiInstallProduct function takes the place of msiexec.exe to install the package. All that’s left is to call MsiSetExternalUI with a simple callback that always returns IDOK and the Restart Manager prompt goes away. Here is the entire bootstrap application:

#include <windows.h>
#include <Msi.h>
#pragma comment(lib, "msi.lib")
 
static int CALLBACK ExternalCallback(void * /*context*/,
                                     UINT /*type*/,
                                     LPCWSTR /*message*/)
{
    return IDOK;
}
 
int WINAPI wWinMain(HINSTANCE /*instance*/,
                    HINSTANCE,
                    PWSTR /*commandLine*/,
                    int /*show*/)
{
    MsiSetExternalUI(ExternalCallback,
                     INSTALLLOGMODE_RMFILESINUSE,
                     nullptr); // context
 
    return MsiInstallProduct(L"path or URL to .msi file",
                             nullptr); // command line
}

And that’s it. I now have a streamlined install and update process without any unnecessary prompts. In future I can even use the bootstrap application to easily skin the progress window but this will do for now.

As an aside, I then compiled a release build and was disappointed that this simple application took a staggering 38KB so I checked with Steve Miller and he showed me how simple it is to get rid of the C Runtime for simple applications that don’t rely on the runtime’s initialization code. You just need to manually set your entry point to wWinMain and the linker will throw away it’s stub code. You can find this in your project’s advanced linker settings. That got me down to under 10KB (including the VeriSign digital signature and common controls manifest).

I hope this story saves you some unnecessary anxiety. And as Rob always says, keep coding… you know I am!

Looking Forward to Window Clippings 3: Save to disk

Last time I described how actions and outputs work in general. Now I can start to show you some of the actions that are included in Window Clippings 3. Some might sound familiar but they all include significant improvements.

In previous versions the “Save to disk” action had a bit of a strange identity. It was an action but its settings were configured differently to other actions. This proved to be a bit confusing. The new “Save to disk” action in Window Clippings 3 has been completely rewritten and includes a few new features.

savetodisk

The first thing you should notice is that all of the actions are now configured directly in the main Window Clippings application window. For the most part there are no modal dialogs to deal with. Simply double click an action you’d like to edit and its configurable settings are directly presented. Most of the options for the “Save to disk” action should be pretty self-explanatory.

Copy full image file name – does what it says and copies the full file system path of the resulting image to the clipboard.

Open containing folder – opens the folder containing the resulting image in Explorer with the image file selected.

Open with default program – opens the resulting image as if you had double-clicked it in Explorer.

The Save to disk action supports the following image formats: PNG, JPEG, TIFF, Bitmap, and JPEG XR. The PNG, TIFF and JPEG XR image formats all support 32 bpp images to accommodate an alpha channel.

Check out the previous highlights: