Comfort Curve Keyboard 3000 bug on Windows 10

I’ve been using the Microsoft Comfort Curve Keyboard 3000 for a number of years, and it’s mostly served me very well. However, since upgrading to Windows 10, the keyboard has shown an annoying bug. If I leave it for a few seconds without pressing anything then the keyboard seems to shut down. If any keys are held down at that point then the OS doesn’t notice when they get released. The result is it thinks the keys are still held until I pressed and release them again. Sami Korhonen has made a YouTube video demonstrating the same problem.

Read more Comfort Curve Keyboard 3000 bug on Windows 10

Emit audible warning from a batch script

Windows Batch (*.bat) scripting is archaic and painful, but occasionally useful for quick bits of environment setup. It’s not always obvious to the user when something has gone wrong though as it’s easy to lose the information amidst other text which scrolls by. An audible warning can be a useful alternative to draw attention to a problem.
Read more Emit audible warning from a batch script

Changing the emulation mode of the Microsoft Web Browser ActiveX control

I’ve been working on an MFC project which embeds a basic web-browser component in a dialog, in the form of a Microsoft Web Browser ActiveX component. (I know… these are ancient technologies… but sometimes you’ve got to work with what’s available on a project!)

Technically, the control hooks into whatever version of Internet Explorer (IE) you’re running on the system. However, it always seemed to fall-back on IE7 emulation mode for us, meaning a lot of our modern standards-compliant HTML wouldn’t work properly. Thankfully, there is a way to fix this problem, although it’s far from obvious!

Read more Changing the emulation mode of the Microsoft Web Browser ActiveX control

Introduction to Win32 Named Pipes (C++)

See also: Win32 named pipe example programs on GitHub.

There are times when it’s extremely useful to be able to pass some data between different programs running on the same system. For example, you might have multiple programs forming part of the same package, and they need to share some important information or work together to process something.

There are several ways to do it, but my choice in a recent task was to use the named pipes functionality of the Win32 API (working in C++). Note that pipes on other operating systems are a little different, so not all of this information is portable. Read more Introduction to Win32 Named Pipes (C++)

What is “hiberfil.sys”?

I noticed that my hard disk was down to less than 1GB free this evening, so I decided to do a clear out. I am running a rather crusty old Windows XP Pro installation. On my usual rounds, I noticed a large file that I hadn’t noticed before, called “hiberfil.sys“. It was sitting in the root of the C drive, taking up around 1.5GB.

I’ve learned from experience (the hard way) not to go about randomly deleting files. This is especially important when Windows displays them with a slightly faded-out icon, indicating they are supposed to be hidden/system files. Thankfully, a quick web-search revealed what I needed to know.

Apparently, it’s related to Windows’ hibernation mode. That’s the kind of half shutdown mode which lets you resume exactly where you left off when you power-up again. The file stores all the stuff in your computer’s active memory, ready to be restored. The more RAM you have, the bigger that file will get. The way to prevent this space being taken up is to disable hibernation mode.

You can get more information about hiberfil.sys at SoftwarePatch.

Working with COM and DirectShow

I’m doing some work with webcams just now, and in the pursuit of efficiency, I am turning to DirectShow. That’s the part of Microsoft’s DirectX which handles things like videos and webcams. Surprisingly, I have hardly used DirectX at all before, except briefly in the first year of my undergraduate degree, so it’s fairly new ground for me. However, I quickly found that it really is well worth spending time getting familiar with the technology as it can be amazingly useful. Read more Working with COM and DirectShow