I’ve been using Windows Live Messenger for years but recently I’ve been annoyed by its flashing message windows. If there are open message windows and a new message is received the window flashes constantly for one minute or until it receives input focus. This is very annoying if you are in the middle of something else and don’t want to read the message just yet. Unfortunately the flashing behavior cannot be configured or disabled from the settings. I could use some other alternative client but I like the official one especially after cleaning it up a bit with the A-Patch.
Today I decided to try changing the behavior by modifying the executable itself. With the help of IDA I figured out how the application does the flashing. When a message is received a timer is set with SetTimer to call a function every 1500ms which makes the window flash with FlashWindow. Once the location of the timer value was known it was easy to change it with a hex editor and make the flashing less intrusive. Just by changing the value from 1500ms to for example 15000ms helped a lot.
To change the value, open msnmsgr.exe with a hex editor (HHD Software Free Hex Editor Neo is nice) and look for the first and only occurrence of the hex string “68 DC 05 00 00 68 C8 00 00 00″. Remember to take a backup of the file first. For the 2009 version (build 14.0.8117.416) it is at 0x00167C4A. For the latest 2011 version (build 15.4.3508.1109) it is at 0x002407A4.
The first half of the data block defines the timer value and the second one is the identifier for the timer event. “DC 05″ translates to 1500 and to set the timer to 15000ms, replace it with “98 3A”. Save changes, start Messenger and enjoy.
Just a quick comment to say many thanks for this tip, it works a treat. I can’t believe after so many years of MSN/Windows Live Messenger, that there is still no proper option to disable the flashing, and apart from a really old script for msgplus, i’ve never seen any patches either? Surely there must be loads of people out there who can’t stand the flashing, especially when you have the window visable all the time on a second monitor!
By the way, changing the second 68 in that string to something else (I used 67) seems to disable the flashing completely. It still flashes once, but then leaves you in peace. Although I have no idea what i’m changing though, it was just trial and error but it seems to work ok!
Cheers
I’m glad this helped you:) However, changing the 68 to something else can cause problems and crashing. The 68 is the opcode “PUSH” which is used to set the values for the SetTimer function call. I will soon post instructions how to disable the flashing completely.
Thanks so much for this. After looking at the various bloated add-ons required to change this sort of thing, your simple instructions were just what I needed.
The Hex location is different though, in my build 14.0.8117.416, but I just searched for the string and made the change. Worked like a charm. Thank you!