惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
Y
Y Combinator Blog
博客园_首页
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
宝玉的分享
宝玉的分享
B
Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
WordPress大学
WordPress大学
L
LangChain Blog
爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
C
Check Point Blog
博客园 - 聂微东
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Help Net Security

博客园 - 骆驼SPACE

linux 跟新 WINDOWS XP 64 BIT操作系统实践和总结 powerdesigner 15 新体验 LINUX AS4.0,BES无法启动故障修复手记 [转载]中国移动新一代业务支撑网演进思路 DELETE 奇怪的latch free IT经理世界:中移动磨砺3G SolarNetOne适用于所有人的太阳能网络 打开BOSS应用软件测试的死结 ORACLE 笔试题 偶的X61 4G内存 XP SP3下无法识别问题结论。 墨菲定律 REDHAT LINUX AS4.0/ORACLE9i CORE 9.2.0.3.0 发生宕机 VM系统涉及的主要数据结构描述 4月25日割接(部分) FreeBSD committer 访谈 freebsd 7.0体验与感受 打上补丁了,第二次的兴奋 0. 6.2-RELEASE遇到了什么问题
WINDOWD LIVE 英文版修改默认字体
骆驼SPACE · 2009-06-16 · via 博客园 - 骆驼SPACE

2007/2/23

彻底修改Windows Live Messenger的字体大小

磨磨蹭蹭升级到了Windows Live Messenger 8.1.0178.00英文版之后,突然发现界面字体都变得很小了(原来的WLM 8.0在我的英文版XP上并没有出现传说中的小字体问题所以也没有在意)。不得不着手准备修改它的资源文件折腾小得BT的字体。

首先Google了一下,发现网上广为流传了几个所谓完美的中文字体修改方法都是很烂的垃圾。无非是修改msgsres.dll,把几个主要字体:比如联系人列表的字体、对话窗口标题栏字体什么的强制修改成9pt。这样修改的后果当然只会是只有这些字体变成了9pt,此外其他字体依然是老样子(比如主界面自己的昵称和状态什么的)。完全是治标不治本的烂方法,猪哥不屑之( ̄^ ̄)。

既然要做,就要做得彻底点。必须仔细观察一下msgsres.dll的界面XML资源里面到底是怎样引用字体的。可以注意到主要都是这样的形式:

FontSize:rcint(49615)pt;
FontSize:rcint(20102)pt;

基本上使用这两种形式的字体占据了界面Element的绝大多数。另外也有少数几个地方是使用更小的一些7pt之类字体的,但是这类字体多是用于显示很小的比如连接状态什么的,不会出现中文所以无需修改(因为我用的是英文版(^▽^))。

那么很明显了,只要找到49615和20102这两个RC String就可以一下子把所有的小字体(目测应该是8pt)改大(一般用9pt)。修改两个字串就改了一大片小字体的Element,这点修改是合算而且彻底的。MSN Messenger所有的这类String资源都存放在msgslang.8.1.0178.00.dll(注意后面的是版本号,随着版本的不同而变化)里面。

用ResHack之类的资源修改软件打开msgslang.8.1.0178.00.dll,找到那两个麻烦的字串:

  • String Table 1257-1033当中20102号String
  • String Table 3101-1033当中49615号String

可以看见两个String果然都是8,只要改成9就万事大吉了。刚开始我是直接在ResHack里面修改成9,然后Compile。结果MSN这厮报错说msgslang这个dll非法。看来加了校验(─.─||)。老天保佑千万别是在末尾加了CRC校验之类的,那可就没辙了。使用二进制比较工具比较了一下放心了:MSN居然是采用在空白处插入“PADDING”这个字符串的方式来进行所谓的“校验”(哇哈哈,看来MS有的时候方法也是很傻的么),而ResHack编译后自然把这些没用的PADDING扔掉了,被MSN发现了。

要绕过这个校验也很容易:俺手工修改2进制文件不用ResHack不就得了。用UE打开msgslang.8.1.0178.00.dll,修改偏移0x1798b4和0x18a4f0两个位置上的0x38为0x39(注意要是你用的MSN版本不同或者语言不同,偏移可能不一样。但是不会差太远,实际上这里就是上面20102和49615两个String的位置。只要对比着ResHack里面的内容和UE的ASCII显示部分前后找找就能很快找到的),存盘,OK。

下次启动Windows Live Messenger之后,界面字体就变成9pt了,中文都显示正常了:

主界面(注意自己的昵称、状态和联系人的中文显示):

联系人信息(同样注意昵称和状态的中文显示):

聊天窗口(注意标题和联系人状态信息的中文显示):