提取TM2008接收到的表情

该日志由 samool 发表于 2007-12-05 10:33 AM

TM2008把接收到的自定义表情不是存放在一个文件夹中,而是放在一个文件里面。这个文件的位置在:我的文档\QQ Files\你的QQ号码\CustomFaceRecv.db,当然你自己的自定义表情就存在CustomFace.db里面。
我们的目的,就是把别人的变成我的,这个.db文件其实是一个复合文档。因此我写了个程序把里面的文件全部提取出来了。

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <Unknwn.h>

int wmain(int argc, wchar_t** argv)
{
HRESULT hr;
IStorage* piStorage = NULL;
IEnumSTATSTG* piEnumSTATSTG = NULL;
STATSTG statstg;
IStream* piStream = NULL;
BYTE bBuffer[512];
ULONG dwReaded;
WCHAR wszExtractDir[MAX_PATH];
WCHAR wszExtractPath[MAX_PATH];
FILE* pFile = NULL;

if (argc != 2)
return 1;

wcscpy(wszExtractDir, argv[1]);
*(wcsrchr(wszExtractDir, L'\\')) = 0L;
wcscat(wszExtractDir, L"\\Extracted");
CreateDirectoryW(wszExtractDir, NULL);

wcscat(wszExtractDir, L"\\");

CoInitialize(NULL);

hr = StgOpenStorageEx( argv[1],
STGM_READ | STGM_SHARE_DENY_WRITE,
STGFMT_ANY,
0,
NULL,
NULL,
IID_IStorage,
reinterpret_cast<void**>(&piStorage) );
if (FAILED(hr))
goto clean0;

hr = piStorage->EnumElements(0, NULL, 0, &piEnumSTATSTG);
if (FAILED(hr))
goto clean0;

hr = piEnumSTATSTG->Next(1, &statstg, NULL);
while (S_OK == hr)
{
wprintf(L"%s\n", statstg.pwcsName);
hr = piStorage->OpenStream( statstg.pwcsName,
NULL,
STGM_SHARE_EXCLUSIVE,
0,
&piStream );
if (FAILED(hr))
continue;

wcscpy(wszExtractPath, wszExtractDir);
wcscat(wszExtractPath, statstg.pwcsName);
pFile = _wfopen(wszExtractPath, L"wb");
if (pFile)
{
hr = piStream->Read(bBuffer, 512, &dwReaded);
while (S_OK == hr && dwReaded)
{
fwrite(bBuffer, 1, dwReaded, pFile);

hr = piStream->Read(bBuffer, 512, &dwReaded);
}

fclose(pFile);
pFile = NULL;
}

piStream->Release();
piStream = NULL;

hr = piEnumSTATSTG->Next(1, &statstg, NULL);
}

clean0:
if (piEnumSTATSTG)
{
piEnumSTATSTG->Release();
piEnumSTATSTG = NULL;
}

if (piStorage)
{
piStorage->Release();
piStorage = NULL;
}

CoUninitialize();
}



编译后的文件下载
qq_db2dir.exe

使用方法qq_db2dir.exe "D:\MyDoc\QQ Files\116454607\CustomFaceRecv.db"
解压出来的位置:D:\MyDoc\QQ Files\116454607\Extracted\

原文地址:http://www.shamuma.net/read.php?18

 傻猫网络日志标签:    tm2008, 表情
网摘: Yahoo Baidu Google Bolaa 365Key Yesky Wozhai POCO ViVi YouNote Hexun Del.icio.us Yeeyoo igooi I2Key Cn3 Bytemen Furl Blinklist Blogmarks Technorati 分享到饭否
相关文章: (最多只显示5条记录)
腾讯TM 2008 Beta 正式发布 (浏览:999, 评论:0)
TM2008 Preview2 已经发布内测版本下载 (浏览:1734, 评论:0)
[最新下载]艾普宽带QQ表情真人秀 (浏览:4102, 评论:5)
» 我要发表评论 你的参与是我最大的动力!    访客评论: (3条记录)
  1. 1 tankb52 :
    2008-02-11 10:53 PM   引用此文发表评论
    那么请问将CustomFace.db里的文件导出应该怎么做呢?今天不知道清理系统时做了些什么,一下子把TM2008 Preview2的表情全部搞没了,我用你的这个qq_db2dir.exe恢复CustomFaceRecv.db可以但把CustomFaceRecv.db改成CustomFace.db后就不能了。
    请指教!
  2. 2 tankb52 :
    2008-02-11 10:53 PM   引用此文发表评论
    我的QQ号是84429538。
  3. 3 samool :
    2008-02-14 6:50 AM   引用此文发表评论
    引用 tankb52 说过的话:
    那么请问将CustomFace.db里的文件导出应该怎么做呢?今天不知道清理系统时做了些什么,一下子把TM2008 Preview2的表情全部搞没了,我用你的这个qq_db2dir.exe恢复CustomFaceRecv.db可以但把CustomFaceRecv.db改成CustomFace.db后就不能了。
    请指教!
    也只有这个功能啊,我是转载的,你看文章末尾有原文地址,可以联系一下原文作者嘛.
 
发表评论:( 来了就留个脚印吧!你的参与是我最大的动力!)

    

(单击图片换张图片)