What follows is a simple tutorial on how to use Resource Hacker to remove buttons/banners from MSN Messenger 7.
I hope I haven't made any errors, it was a big tutorial to put together! Let me know if you find any. Thanks everyone for the help and support!
Note: You must '
Compile Script' after you edit something, if you forget, it will prompt you to do so the next time you search for text.
First of all open Resource Hacker, then open
msnmsgr.exe
Main Contact List Window
Removing the MSN Today Button
Find (Ctrl+F):
<cmdbutton cmdid=40234 id=atom(msntodaybtn)
Result: UIFILE > 923 > 1033
code:
<cmdbutton cmdid=40234 id=atom(msntodaybtn) class="ToolbarBtn" layout=flowlayout(0,2,0,2) AccName=rcstr(4231) AccRole=57 AccDesc=rcstr(4230) ShortcutString=rcstr(4229)>
Delete
id=atom(msntodaybtn)
Change
layout=flowlayout(0,2,0,2) to
layoutpos=none
Final result should look like this:
code:
<cmdbutton cmdid=40234 class="ToolbarBtn" layoutpos=none AccName=rcstr(4231) AccRole=57 AccDesc=rcstr(4230) ShortcutString=rcstr(4229)>
Removing the My Space Button
Find (Ctrl+F):
<cmdbutton cmdid=40421 id=atom(spacebtn)
Result: UIFILE > 923 > 1033
code:
<cmdbutton cmdid=40421 id=atom(spacebtn) class="ToolbarBtn" layout=flowlayout(0,2,0,2) AccName=rcstr(4257) AccRole=57 AccDesc=rcstr(61769) ShortcutString=rcstr(4256)>
Delte
id=atom(spacebtn)
Change
layout=flowlayout(0,2,0,2) to
layoutpos=none
Final result should look like this:
code:
<cmdbutton cmdid=40421 class="ToolbarBtn" layoutpos=none AccName=rcstr(4257) AccRole=57 AccDesc=rcstr(61769) ShortcutString=rcstr(4256)>
Removing the Add Contact Button
Find (Ctrl+F):
<cmdbutton id=atom(idAddContact)
Result: UIFILE > 923 > 1033
code:
<cmdbutton id=atom(idAddContact) cmdid=40282 class="TasklistBtn" layout=flowlayout(0,2,0,2) background=ifhc(window, gradient(rgb(222,229,247), rgb(242,242,250), 1)) bordercolor=ifhc(buttonshadow, rgb(214,220,242)) borderthickness=rect(1,1,1,1) padding=rect(3,2,3,2)
Delete
id=atom(idAddContact)
Change
layout=flowlayout(0,2,0,2) to
layoutpos=none
Final result should look like this:
code:
<cmdbutton cmdid=40282 class="TasklistBtn" layoutpos=none background=ifhc(window, gradient(rgb(222,229,247), rgb(242,242,250), 1)) bordercolor=ifhc(buttonshadow, rgb(214,220,242)) borderthickness=rect(1,1,1,1) padding=rect(3,2,3,2)
Removing the Search Bar
Find (Ctrl+F):
<element id=atom(idSearchContainer)
Result: UIFILE > 923 > 1033
code:
<element id=atom(idSearchContainer) layout=borderlayout() padding=rect(1,4,1,3)>
Change
layout=borderlayout() to
layoutpos=none
Change
padding=rect(1,4,1,3) to
padding=rect(0,0,0,0)
Final result should look like this:
code:
<element id=atom(idSearchContainer) layoutpos=none padding=rect(0,0,0,0)>
Removing the Ad Banner
Find (Ctrl+F):
<element layoutpos=top layout=verticalflowlayout(0,2,2,2) padding=rect(2,0,3,2)>
Result: UIFILE > 923 > 1033
code:
<element layoutpos=top layout=verticalflowlayout(0,2,2,2) padding=rect(2,0,3,2)>
Change
layoutpos=top to
layoutpos=none
Final result should look like this:
code:
<element layoutpos=none layout=verticalflowlayout(0,2,2,2) padding=rect(2,0,3,2)>
Instant Message Window
Removing the MSN Logo from the Instant Message Window
Ctrl+F (Find):
<png class="CaptionImg" id=atom(msnlogo)
Press F3 (Find Next) until it takes you to UIFILE > 920 > 1033 and shows you this line:
code:
<png class="CaptionImg" id=atom(msnlogo) layoutpos=ifhc(none, right) flip=false idres=1041/>
Now change it to this:
code:
<png class="CaptionImg" id=atom(msnlogo) layoutpos=ifhc(none, none) flip=false idres=1041/>
Press F3, do the same changes.
Repeat another 2 times. There are a total of 4 in UIFILE 920.
Removing the Winks Button
Ctrl+F (Find):
<cmdbutton cmdid=35126 id=atom(winkbtn)
Result: UIFILE > 920 > 1033
code:
<cmdbutton cmdid=35126 id=atom(winkbtn) class="ToolbarBtn" layout=flowlayout(0,2,0,2) AccName=rcstr(60004) AccRole=57 AccDesc=rcstr(3178) ShortcutString=rcstr(60004)>
<png flip=false idres=1093 class="ToolbarIcon" />
<element id=atom(suppress) padding=rect(2,0,0,0) content=rcstr(60004) />
<element class="ToolbarCaret"/>
</cmdbutton>
Delete
id=atom(winkbtn)
Change
layout=flowlayout(0,2,0,2) to
layoutpos=none
Final result should look like this:
code:
<cmdbutton cmdid=35126 class="ToolbarBtn" layoutpos=none AccName=rcstr(60004) AccRole=57 AccDesc=rcstr(3178) ShortcutString=rcstr(60004)>
<png flip=false idres=1093 class="ToolbarIcon" />
<element id=atom(suppress) padding=rect(2,0,0,0) content=rcstr(60004) />
<element class="ToolbarCaret"/>
</cmdbutton>
Removing the Packs Button
Find (Ctrl+F):
<cmdbutton cmdid=40614
Result: UIFILE > 920 > 1033
code:
<cmdbutton cmdid=40614
id=atom(themesbtn)
class="ToolbarBtn"
layout=flowlayout(0,2,0,2)
AccName=rcstr(60013)
AccRole=57
AccDesc=rcstr(44082)
ShortcutString=rcstr(60013)>
<png flip=false idres=1012 class="ToolbarIcon" />
<element id=atom(suppress) padding=rect(2,0,0,0) content=rcstr(60013) />
<element class="ToolbarCaret"/>
</cmdbutton>
Delete
id=atom(themesbtn)
Change
layout=flowlayout(0,2,0,2) to
layoutpos=none
Final result should look like this:
code:
<cmdbutton cmdid=40614
class="ToolbarBtn"
layoutpos=none
AccName=rcstr(60013)
AccRole=57
AccDesc=rcstr(44082)
ShortcutString=rcstr(60013)>
<png flip=false idres=1012 class="ToolbarIcon" />
<element id=atom(suppress) padding=rect(2,0,0,0) content=rcstr(60013) />
<element class="ToolbarCaret"/>
</cmdbutton>
Removing the Nudge Button
Find (Ctrl+F):
<cmdbutton cmdid=689
Result: UIFILE > 920 > 1033
code:
<cmdbutton cmdid=689
id=atom(buzzbtn)
class="ToolbarBtn"
layout=flowlayout(0,2,0,2)
AccName=rcstr(699)
AccRole=57
AccDesc=rcstr(700)
>
<png flip=false padding=rect(2,0,0,0) idres=911 class="ToolbarIcon" />
</cmdbutton>
Delete
id=atom(buzzbtn)
Change
layout=flowlayout(0,2,0,2) to
layoutpos=none
Final result should look like this:
code:
<cmdbutton cmdid=689
class="ToolbarBtn"
layoutpos=none
AccName=rcstr(699)
AccRole=57
AccDesc=rcstr(700)
>
<png flip=false padding=rect(2,0,0,0) idres=911 class="ToolbarIcon" />
</cmdbutton>
Removing the Search Button
Find (Ctrl+F):
<element id=atom(searchbtnbk)
Result: UIFILE > 920 > 1033
code:
<element id=atom(searchbtnbk) class="SendButtonBk" layout=borderlayout()>
Delete
id=atom(searchbtnbk)
Change
layout=borderlayout() to
layoutpos=none
Final result should look like this:
code:
<element class="SendButtonBk" layoutpos=none>
Removing the Text AdBanner
Find (Ctrl+F):
<element id=atom(adbannercont)
Result: UIFILE > 920 > 1033
code:
<element id=atom(adbannercont) layout=filllayout() layoutpos=bottom >
<element height=25 layout=borderlayout() borderthickness=rect(0,1,0,0) colorize=enabled/>
<textadbanner id=atom(adbanner) layout=borderlayout() padding=rect(1,0,1,3) borderthickness=rect(0,1,0,0) colorize=enabled>
<cmdbutton id=atom(adbannertextcontainer) layout=verticalflowlayout(0,0, 2, 2) layoutpos=left background=argb(0,0,0,0) selected=false tooltip=true AccName=rcstr(85) padding=rect(19,0,2,4) colorize=enabled>
<wledit id=atom(adbannertext) class="ReadOnlyText" selected=false active=inactive />
</cmdbutton>
</textadbanner>
</element>
Delete all 8 lines.
Removing the Activities Button
Find (Ctrl+F):
<cmdbutton cmdid=40617 id=atom(appdropdownbtn)
Result: UIFILE > 920 > 1033
code:
<cmdbutton cmdid=40617 id=atom(appdropdownbtn) class="TaskbarBtn" layout=borderlayout() AccName=rcstr(60041) AccDesc=rcstr(44037) ShortcutString=rcstr(60041)>
Delete
id=atom(appdropdownbtn)
Change
layout=borderlayout() to
layoutpos=none
Final result should look like this:
code:
<cmdbutton cmdid=40617 class="TaskbarBtn" layoutpos=none AccName=rcstr(60041) AccDesc=rcstr(44037) ShortcutString=rcstr(60041)>
Removing the Color Button
Find (Ctrl+F):
<cmdbutton cmdid=40317 id=atom(colorizedropdownbtn)
Result: UIFILE > 920 > 1033
code:
<cmdbutton cmdid=40317 id=atom(colorizedropdownbtn) class="TaskbarMiniBtn" layout=filllayout() AccName=rcstr(436) AccDesc=rcstr(435) >
Delete
id=atom(colorizedropdownbtn)
Change
layout=filllayout() to
layoutpos=none
Final result should look like this:
code:
<cmdbutton cmdid=40317 class="TaskbarMiniBtn" layoutpos=none AccName=rcstr(436) AccDesc=rcstr(435) >
Removing the What's Hot Section (UIFILE > 940 > 1033)
Find (Ctrl+F):
<element id=atom(contentgrp) layout=verticalflowlayout(0, 3, 3, 0) background=ifhc(menu, rgb( 238, 243, 250 ))>
Change
layout=verticalflowlayout(0, 3, 3, 0) to
layoutpos=none
Final result should look like this:
code:
<element id=atom(contentgrp) layoutpos=none background=ifhc(menu, rgb( 238, 243, 250 ))>
Again, Find (Ctrl+F): <element id=atom( PremiumPacks )
Result:
code:
<element id=atom( PremiumPacks )
layout=FillLayout()/>
Change layout=FillLayout() to layoutpos=none
Final result should look like this:
code:
<element id=atom( PremiumPacks )
layoutpos=none />
Again, Find (Ctrl+F):
<element id=atom( PremiumEmoticons)
Result, on top of that you will see:
code:
<element id=atom(contentgrp) layout=verticalflowlayout(0, 3, 3, 0) background=ifhc(menu, rgb( 238, 243, 250 ))>
Change
layout=verticalflowlayout(0, 3, 3, 0) to
layoutpos=none
Final result should look like this:
code:
<element id=atom(contentgrp) layoutpos=none background=ifhc(menu, rgb( 238, 243, 250 ))>
Don't forget, '
Compile Script' when you're done! Then save it as msnmsgr.exe (backup the original before you do so, just incase!)
------------------------------------------------------------------
Hex Editing
/*Updated offsets for version 7.0.0813 */
Enable Polygamy
Offset: 00147079
Normal: B7
Patched: B6
Remove Nudge Delay
Offset: 000FF52B
Normal: 8B 86 A8 02 00 00
Patched: 33 C0 40 90 90 90
Remove File Transfer Protection
Offset 1: 001233FB
Normal 1: 7C
Patched 1: EB
Offset 2: 001B8EDC
Normal 3: 74
Patched 4: EB
You can find a tutorial on how to find the polygamy offset here: http://www.m00.cx/dev/polygamy.html (by
Segosa)
The tool that you'll need for the job is Olly Debugger, which you can find here: http://home.t-online.de/home/Ollydbg/download.htm
------------------------------------------------------------------
How to add an "Always On Top" button to the Contact List
and Instant Message window when the menu is hidden.
Open
msnmsgr.exe in ResHacker
Find (Ctrl+F):
<element id=atom(minmaxclose
Press F3 twice, you should now be in
UIFILE 920 [Instant Message Window]
Result:
<element id=atom(minmaxclosebase) layout=flowlayout(0,2,0,2)>
Add the following three lines beneath our search result:
code:
<cmdbutton cmdid=40027 class="CaptionBtn" layout=filllayout() AccName=rcstr(47012) AccDesc=rcstr(47012) active=mouse>
<png class="CaptionImg" idres=869 contentalign=middlecenter padding=rect(0,0,0,0)/>
</cmdbutton>
Press F3 (we're still in UIFILE 920 [Instant Message Window]))
Add the following three lines beneath our search result:
code:
<cmdbutton cmdid=40027 class="CaptionBtn" layout=filllayout() AccName=rcstr(47012) AccDesc=rcstr(47012) active=mouse>
<png class="CaptionImg" idres=869 contentalign=middlecenter padding=rect(0,0,0,0)/>
</cmdbutton>
Press F3 again (we're still in UIFILE 920 [Instant Message Window]))
Add the following three lines beneath our search result:
code:
<cmdbutton cmdid=40027 class="CaptionBtn" layout=filllayout() AccName=rcstr(47012) AccDesc=rcstr(47012) active=mouse>
<png class="CaptionImg" idres=869 contentalign=middlecenter padding=rect(0,0,0,0)/>
</cmdbutton>
Press F3 again.. (we're still in UIFILE 920 [Instant Message Window])
Add the following three lines beneath our search result:
code:
<cmdbutton cmdid=40027 class="CaptionBtn" layout=filllayout() AccName=rcstr(47012) AccDesc=rcstr(47012) active=mouse>
<png class="CaptionImg" idres=869 contentalign=middlecenter padding=rect(0,0,0,0)/>
</cmdbutton>
Click "Compile Script"
Now press F3 five times until you reach
UIFILE 923 [Contact List]
Add the following three lines beneath our search result (notice the cmdid has changed for our last pasting):
code:
<cmdbutton cmdid=40044 class="CaptionBtn" layout=filllayout() AccName=rcstr(47012) AccDesc=rcstr(47012) active=mouse>
<png class="CaptionImg" idres=869 contentalign=middlecenter padding=rect(0,0,0,0)/>
</cmdbutton>
Click "Compile Script"
Now that we've added the button to the Contact List, we need to give it an image.
Click: Action > Add a new Resource ...
Click: Open file with new resource...
Choose the
PNG image you want to add, I suggest using this one
Now fill in the following fields with the details below..
Resource Type:
PNG
Resource Name:
869
Resource Language:
1033
(Note: change 1033 to the number that corresponds with your language)
Click Add Resource
Now let's save the file by clicking: File > Save (or Save As... if you wish to not overwrite the file)
Ok, now that's done, we need to add a string so that when we hover over the button, it will say "Always On Top".
So let's open
msgslang.dll in ResHacker.
Click the plus next to the folder String Table (expanding it)
Scroll down to the folder numbered
2939, expand it (by clicking the plus sign) and click on 1033 (or whatever number you have there, it's a language identifier).
Now add this line to the end, before the curly bracket } :
code:
47012, "Always On Top"
Click "Compile Script"
Save the file.
We're done, run MSN Messenger!
Some notes:
cmdid=40044 - 40044 is the command for toggling the Always On Top feature in the Contact List.
cmdid=40027 - 40027 is the command for toggling the Always On Top feature in the Instant Message Window.
I found these by browsing through the MENU resources in the msgslang.dll file.
idres=869 - 869 is the number of the PNG image we are using.
AccName=rcstr(47012) AccDesc=rcstr(47012) - 47012 is the number of the string we added to the msgslang.dll file.
How to change your Display Picture
(By clicking on it in the Contact List)
I noticed a few people were complaining that when they click their Display Picture in the Contact List, it shows them their contact card. So, I thought I'd post this little tutorial on how to change it back to changing the DP (I'm also going to include this feature in the next major release of my patch, that is if Microsoft decide to keep it like this). Enjoy!
Exit MSN Messenger (and back it up if you want)
Open
msnmsgr.exe in ResHacker
Find (Ctrl+F):
<usertileview id=atom(idMainWndUserTile) cmdid=40400
Result, UIFILE --> 923:
code:
<usertileview id=atom(idMainWndUserTile) cmdid=40400 active=mouseandkeyboard | nosyncfocus/>
Change
cmdid=40400 to
cmdid=310
It should now look like this:
code:
<usertileview id=atom(idMainWndUserTile) cmdid=310 active=mouseandkeyboard | nosyncfocus/>
Click 'Compile Script'
Save the file (File --> Save)
Open msgslang.dll in Resource Hacker..
Expand the
String Table folder and navigate down to the folder numbered
2756.
Change:
44089, "View My Contact Card"
To:
code:
44089, "Change My Display Picture"
Compile Script, save the file.
And we're done! Run Messenger!
How to add a Properties option
when you right-click a contact
Exit MSN Messenger, open msgslang.dll in reshacker..
Goto Menu > 208 > 1033
Underneath
MENUITEM "&Delete Contact", 40043, GRAYED (on line 37), paste the following line:
code:
MENUITEM "&Properties", 40041
Click 'Compile Script'.
Save msgslang.dll
You're done
Run MSN Messenger!
Now you can right-click any contact on your list and check their "Properties" just like in MSNM 6.2.
Swap Now Playing Title & Artist
Windows Media Player
Exit MSN Messenger and Windows Media Player.
Open
psmsong.dll in Resource Hacker...
Go to
String Table > 7
Change
106, "{0} - {1}" to
106, "{1} - {0}"
Final Result:
code:
STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
102, "MSN Messenger Music Plugin"
103, "Changes your personal message in MSN Messenger to show the currently playing song."
106, "{1} - {0}"
}
Click Compile Script
Save, run MSN Messenger!
WinAMP
Download the toaster Plug-in by Shane and install it:
http://apatch.killercarrot.co.uk/index.php?cat=toaster
Open WinAMP, go to
Options > Preferences > Plug-ins > General Purpose > click
Toaster for Winamp..... > click
Configure selected plug-in > click the
Extra tab and change
MSN Format from
{0} - {1} to
{1} - {0} > click
OK
Done