cancellableSendMessageTimeout: Fix nasty memory corruption if a message is ever sent to HWND NULL, which we sometimes do in our SysListView32 code.
We use HWND NULL to signal to the background thread that it should die, so when a message was sent to HWND NULL, the background thread was dying and deleting its data block, but the main thread was still using it, thus resulting in memory corruption. Furthermore, subsequent messages would simply have been dropped until cancellation. This could be seen regularly when pressing backspace in Windows Explorer in Windows XP, but was probably occurring elsewhere too.