作者:小争 http://xz.2c.to/
首先,我们要了解“魔法表情”的原理,当我们选择了一个魔法表情的时候,其实等于我们从网上下载了一个FLASH动画,然后通过QQ里面自带的一个“MagicFlash”程序,将这个动画播放出来。
我们了解到了原理,下面我们就要找到这些FLASH动画,当我们发送魔法表情的时候,在QQ安装的“...tencent”文件夹下就会有一个名为magicface的文件夹,在它里有很多swf文件,文件名很长,双击后却不能播放。
    这时再预览一个QQ魔法表情,您会发现在magicface文件夹里多了二个swf文件,一个是长文件名,一个是短文件名,不一会,长文件名的swf文件留下了,但是短文件名的swf文件却消失了。
根据直觉,这个稍纵即逝的短文件名swf文件就应该是“魔法表情”本尊,下面我就要通过“复制”与“粘贴”来抢夺这些魔法表情。
首先对免费的魔法表情下手,找一个QQ好友,发一个魔法表情过去,马上转到magicface文件夹里,将文件名短的swf文件,如:target开头的文件复制下来(快捷键Ctrl+C),然后转到桌面,快速保存这些swf文件的文件夹,比如点击任务栏里的“显示桌面”图标快速回到桌面,按下Ctrl+V将文件粘贴到桌面上。这样一个漂亮可爱的Flash魔法表情就到手了!
    下面我们就要“抢夺”那些收费的魔法表情了,对付他们就要利用魔法表情的预览功能,只要一预览,swf文件就会现身于magicface文件夹,再将其复制下来即可,方法同上。
    我们可以将这个程序复制到桌面,然后将想要播放的魔法表情用鼠标左键选中,然后拖拽到这个“MagicFlash”程序上,接着松手,您再看看这时的播放效果,是不是和在QQ中一模一样呢!
    通过这个方法,我们便可以将QQ中所有的魔法表情都保存下来,可以自己欣赏,也可以发送给好友,这样所有的收费魔法表情,我们就完全可以免费发送了。
我再说下QQ魔法表情的有趣东西吧.
大家都知道,在QQ魔法表情启动时,内存会多一个MagicFlash.exe的进程,他就是一个简单的FLASH播放器,其实也不是什么播放器,原理就是一个网页.在QQ的安装目录下面可以找到这个MagicFlash.exe文件,你可以试着拖一幅FLASH文件(SWF)到MagicFlash.exe图标上,看看这就是所谓的魔法表情,见小争捉的图片吧.
一个原始flash 图片是有边框的.
 
而用了MagicFlash.exe运行flash就没了边框.全透明的了.酷吧~
 
 
 
呵呵.有趣吗?透明的flash .是不是很简单呢。
说到实现的原理,也是非常简单的,小争仔细用ResScope研究过,因我常爱分析代码的,所以用了ResScope这个资源分析器,其实MagicFlash.exe就是一个网页查看程序,MFC写的,是一个VC控件.当运行MagicFlash.exe时,程序把当前屏幕的固定区域截取下來,做这网页的背景,然后插入一个ActiveX小插件(当然是FLASH了),用来播放你给的Flash,同时把Flash的背景设为透明,这样就神不知鬼不觉地呈现了透明的FLASH播放在你的屏幕当中.其实并不是透明的,而是把当前的固定屏幕区域截取下来做为网页的背景,呵呵..是不是很简单呢.你也可以用任何语言写一个和MagicFlash.exe一样的程序呢.下面贴出来播放Flash的代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html charset=gb2312" />
</head>
<body background="AAAAAAAAAA" style="overflow:hidden" border= "0">
<SCRIPT LANGUAGE="JavaScript">
function ID1_DoFSCommand(command, args) {
 if(command=="window" && args=="closeResult close")
 {
  document.getElementById('V1').innerHTML = ''
 }
}
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
On Error Resume Next
Sub ID1_FSCommand(ByVal command, ByVal args)
    Call ID1_DoFSCommand(command, args)
End Sub
</SCRIPT>
<DIV ID="V1">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="ID1" width="400" height="400" align="middle">
<param name="movie" value="BBBBBBBBBB" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="scale" value="showall" />
</object>
</DIV>
</body>
</html>
自己想想吧.这儿小争讲到这里啦.