截屏

实战截屏MSN好友列表

引言:看一个程序员是如何思考截屏MSN好友列表的。

起因:昨天下午忽然想做个MSN Messenger(这里简称“MSN”)好友列表的大合影(通过截取屏幕的方式,这里简称“截屏”),于是尝试了一系列的方法,最终勉强成功。结果虽不很完美,但思考解决问题的过程却值得回味。

第一计:以逸待劳:截取MSN好友列表的屏幕,直接截屏是肯定不行的,因为我的MSN好友列表太长(150个),单个屏幕显示不了所有的好友,需要通过滚动条滚动才能逐次显示全部好友名单。如果直接截屏的话,需要截取多次(对我来讲需要截取8次)然后再合成。这样子一则费劲,二则因为操作时间过长,容易在截屏过程中由于用户在线状态的改变而导致前后列表数据不一。因此,决定以逸待劳,首先考虑采用截屏软件来自动滚动截屏:通过让截屏软件自动滚动滚动条并同时自动截屏的方式获得全部好友列表的截屏。

在我的理解中,HyperSnap应该是世界上最好的截屏软件。因此我猜测HyperSnap应该有滚动截屏的功能。安装HyperSnap后查阅其帮助文档,果然有滚动截屏的功能。但是这个滚动截屏却不能应用在MSN上,究其原因,是因为从技术上来讲MSN的好友列表不是一个“普通的滚动框”,不能被HyperSnap识别,自然也就不能自动滚屏。通过自动滚屏的方式截屏失败后,我考虑通过提高屏幕分辨率来直接在屏幕上显示所有的MSN好友列表。

第二计:擒贼擒王:屏幕分辨率越高,能在屏幕上显示的东西就越多。因此,只要能够将屏幕分辨率提高到一定程度,就能够直接在屏幕上显示完整的MSN好友列表。因此,提高屏幕分辨率是个一劳永逸的方法。可惜的是,电脑的屏幕分辨率是有上限的,对我的电脑来讲最高是2048x1536。在这个最高分辨率下,仍然不能显示完整的MSN好友列表。提高屏幕分辨率的方法失败后,开始考虑寻找其他途径进一步提高屏幕分辨率

第三计:釜底抽薪:通过其他工具进一步扩大屏幕分辨率。所谓纲举目张,只要能抓住屏幕分辨率这个“纲”,就能成功。因此我考虑通过其他工具进一步扩大屏幕分辨率。可惜的是经过研究,我觉得屏幕分辨率的上限是由硬件决定的,不能通过软件进一步提高,因此这条路是不通的。通过其他途径进一步提高屏幕分辨率的尝试失败后,我考虑采用多屏幕的方式显示完整的MSN好友列表。

第四计:无中生有:寻找多屏幕软件。如果一个屏幕不能显示全部的好友列表,那么也许两个、三个屏幕组合在一起就能够显示全部的好友列表了,并且可能在此基础上截屏。可惜经多方寻觅,没有找到合适的该类软件。多屏幕失败后,考虑寻找MSN类似替代软件,然后对替代软件上的好友列表进行截屏。

第五计:借刀杀人:寻找MSN类似替代软件。有一些MSN的替代软件,例如Gaim、IM2等,但仍无法通过这些替代软件成功截屏。这个方法失败后,考虑寻找MSN插件软件

第六计:假途伐虢:寻找MSN插件。本来猜测也许可以通过MSN插件实现截屏操作,但事实上发现没有此种插件。插件软件失败后,自己感觉几乎黔驴技穷。忽然灵光一现……

第七计:反客为主:旋转屏幕。因为屏幕的宽度比高度长很多,如果能够把屏幕旋转90度,再结合第二计,也许就能容纳下整个MSN好友列表呢。不过事实证明,这种方法虽然能够容纳更多的好友列表,但因为MSN好友数量过多,这种方法仍然不能容纳全部好友列表。至此我几乎黔驴技穷。

第八计:偷梁换柱:HTML替换。现实来讲,看起来只能通过多次分段截屏然后组合的方式获得全部MSN好友列表了。沿着这个思路进行的话,可以通过HTML代码使得几个图片完美的组合在一起:看起来是一个完整的图片,其实是几个不同的图片的无缝衔接。这是一个退而求其次、不得以而为之的方法。

第九计:抛砖引玉:网上搜索。用关键字“screenshot MSN messenger contact list”等关键字在网上搜索,没有得到有用的结果。此法无效。

第十计:借尸还魂:上面所有方法失败后,考虑卸载当前最新版本的MSN,而安装一些老版本的MSN。因为虽然不能对新的版本截屏,但也许可以对老的版本截屏呢。MSN近些年曾有几个经典的老版本:v4.6、v5和v6,经过测试截屏老版本的MSN的方法也行不通。

总结:在我看来,目前暂无完善的获得MSN完整的好友列表截屏的招数,只有采用多次截屏、后期合成的方式才能获得较好的效果,但可借鉴第七计、第八计以节省精力。

[补充说明1] 按以上结论得到的MSN好友列表截屏:按在线状态排列按类别排列

[补充说明2] 本文创建于2005年05月19日,当时MSN最新版本为v7.0。

[补充说明3] 本文发布才1个小时,Ben就提供了一个终极解决方案:HyperSnap中的“捕捉->自动延展窗口-->高度:3000”功能。2005-08-28 16:23:43

标签:

类别: