I was trying to port a screensaver from Visual Studio 2005 to Visual Studio 2008.
After loading the project in VS2008, compilation went without any problems. However, when I tried to test the screensaver on a Windows XP box I got the error message that the function ChangeWindowMessageFilter could not be found in user32.dll. The first thing I did was to open the MSDN and search for this ChangeWindowMessageFilter function. According to the documentation ChangeWindowMessageFilter is only available on Windows Vista. I obviously didn’t use that function myself otherwise I would have known about it in the first place 😉 So I checked the libraries that I was linking to. The most obvious candidate would be the ScrnSave.lib library. I searched for it and it was linking to the version that was installed by Visual Studio 2008 in C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib. To make sure I did a “dumpbin /symbols ScrnSave.Lib” on it and it was indeed using the ChangeWindowMessageFilter function.
It is pretty strange that this ScrnSave.Lib is dependent on a Vista API call. This just annoys developers that try to create a screensaver that still works on Windows XP. It should be pretty easy for the developers of ScrnSave.Lib to dynamically load the user32.dll and see if ChangeWindowMessageFilter is available.
Anyway, the easiest and quickest workaround that I’m using right now is to use the ScrnSave.Lib from the Visual Studio 2005 installation. After recompiling my screensaver with this older library it works again on Windows XP.
A new iteration of the Wallpaper Cycler development has started.
The following new features have been implemented in Wallpaper Cycler:
- When a layout doesn’t contain a wallpaper object with the “Which Wallpaper” property set to “Auto” a warning will be shown. This is done because in that case certain aspects of WPC will not work as expected. Double clicking a wallpaper in the main window for example will actually NOT show that wallpaper on your desktop because that’s the “Auto” wallpaper.
- A new option in Tools > Program Settings > Global > Startup called “Delay load last WCL at startup”. This allows you to specify a delay in seconds before Wallpaper Cycler will reload the last WCL file at startup.
- You can now make a printout of your calendar notes.
- %wallpaperfullname% can be used in text objects on layouts to display the full pathname + extension of a wallpaper and not only the filename part like %wallpapername% does.
I also made the following bug fixes for Wallpaper Cycler:
- When using “Random from fixed category” for a wallpaper object in a layout, WPC will now recursively select a wallpaper from the selected fixed category.
- Some configurations of wallpaper objects in layouts didn’t take disabled tags into account.
- The “Quick Disable” feature now properly checks all wallpapers currently on the desktop to determine if it needs to cycle when disabling a category or tag.
- WPC would crash with truncated BMP files. Most photo editing programs are also unable to load those, however, now WPC loads them without a problem, at least when they are not too damaged.
- The Vista gadget didn’t install on Vista 64 bit in the correct folder.
- You were unable to specify “-1” for the “Days After Current Day” in layouts > Calendar Notes Object > Edit Calendar Notes > General
LINQ (Language Integrated Query) is a recent powerful addition to the .NET framework and allows you to query your data sources in an elegant and simple way. In this post I’ll give a very brief introduction to LINQ and how it makes your code much more readable. Read the rest of this entry »
Microsoft released Windows Vista Service Pack 1 on March 18 in English, French, Spanish, German, and Japanese. You can get it from Windows Update or the Microsoft Download Center. In April, Windows Update will begin to download SP1 automatically but will only install it after explicit agreement of the user. In April, SP1 will also be available in the remaining 31 languages.
On some systems Windows Vista Service Pack 1 might not be available for installation from Windows Update and might not be offered by Automatic Updates. This can have several causes. If this is happening for you, check KB948343.
A list of all changes/fixes in SP1 can be found here.