首页
社区
课程
招聘
想拦截TextOut这类的API,记录所有的屏幕输出,有问题。
发表于: 2006-5-3 09:11 5056

想拦截TextOut这类的API,记录所有的屏幕输出,有问题。

2006-5-3 09:11
5056
在拦截TextOut的过程中,对文件进行操作,在切换进程的时候,有空指针错误,到底是什么原因呢。有没有做过类似工作的大侠,说一说,API HOOK的过程中应该如何把数据写入文件呀。

DLLEXPORT BOOL WINAPI NHExtTextOutA(HDC hdc,
    int X,
    int Y,
    UINT fuOptions,
    CONST RECT *lprc,
    LPCTSTR lpString,
    UINT cbCount,
    CONST INT *lpDx)
{
// restore
RestoreWin32Api(&g_ExtTextOutAHook, HOOK_NEED_CHECK);

//---------------------------------------------------
ofstream SaveFile("c:\\file1.txt", ios::ate);
    SaveFile << "NHExtTextOutA:";
SaveFile << (const char*)lpString;
SaveFile << "\r\n";
SaveFile.close();
//fp = fopen("c:\\file1.txt", "w+");
//PrintA(fp, X, Y, lpString);
//fclose(fp);
//fp = NULL;
//---------------------------------------------------
ExtTextOutA(hdc, X, Y, fuOptions, lprc, lpString, cbCount, lpDx);

HookWin32Api(&g_ExtTextOutAHook, HOOK_NEED_CHECK);

return TRUE;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
2
看来 lpstring 不是以 null 结尾,而是取决于 cbCount

你试试先把 lpstring 存到另一个 char buffer 中 ( cbCount 长度),再写入 file
2006-5-3 10:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
多谢版主了。不过我又有新问题了。为什么我不能访问CONST RECT *lprc?一访问这个指针,就内存错误。
2006-5-3 17:19
0
游客
登录 | 注册 方可回帖
返回
//