首页
社区
课程
招聘
[求助]已知窗口句柄,但窗口被完全遮挡,能对它抓图吗
发表于: 2010-5-18 17:22 9627

[求助]已知窗口句柄,但窗口被完全遮挡,能对它抓图吗

2010-5-18 17:22
9627
请教各位前辈:
若已知窗口句柄,但该窗口被完全遮挡,能对它抓图吗

若能请给出伪码,谢谢

若能抓图,则我的OllyDbg又多了一个功能,呵呵

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

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 324
活跃值: (57)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
若能抓图,则我的OllyDbg插件又多了一个功能,呵呵
2010-5-18 17:23
0
雪    币: 4399
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
PrintWindow()
2010-5-18 17:32
0
雪    币: 324
活跃值: (57)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
Windows NT: Pointer to a null-terminated character string that specifies either "DISPLAY" for a display driver, or the name of a printer driver, which is usually "WINSPOOL".

"WINSPOOL" :是这个吗?
2010-5-18 17:33
0
雪    币: 4399
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
2010-5-18 17:37
0
雪    币: 324
活跃值: (57)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
谢谢,我看看
2010-5-18 17:42
0
雪    币: 4399
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看李易峰的回答,另外如果是opengl或者dx绘制的图形,设置过最小化窗口active=false,那是截不到图的。
2010-5-18 17:47
0
雪    币: 324
活跃值: (57)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
OD插件中实现已知一个窗口句柄的抓图,不考虚OpenGL等或窗口属性本来就是DisVisable的情况,能对大多数情况适用就可以了
2010-5-18 17:56
0
雪    币: 116
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
听说printwindow可以,不过很麻烦
2010-5-18 18:17
0
雪    币: 324
活跃值: (57)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
感谢二位前辈的无私帮助,我已经搜索到一个参考代码了,也给二位前辈看看:
http://www.programfan.com/CLUB/showtxt.asp?id=281515
2010-5-18 18:36
0
雪    币: 324
活跃值: (57)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
但该函数的调用有点麻烦,我现在把它包装一下,方便大家使用:
#define PW_CLIENTONLY           0x00000001
//WINUSERAPI BOOL WINAPI PrintWindow(IN HWND hwnd, IN HDC hdcBlt, IN UINT nFlags);

typedef BOOL(FAR WINAPI *PWFUNC)(HWND, HDC, UINT);

BOOL PrintWindow(IN HWND hwnd, IN HDC hdcBlt, IN UINT nFlags)
{
        HMODULE hmod = LoadLibrary("user32.dll");
        PWFUNC PrintWindow = (PWFUNC)GetProcAddress(hmod, "PrintWindow");
        BOOL bReturn = PrintWindow(hwnd, hdcBlt, nFlags);
        FreeLibrary(hmod);
       
        return bReturn;
}
2010-5-18 19:41
0
雪    币: 324
活跃值: (57)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
指的是VC6下调用麻烦,其它的未知
2010-5-18 19:42
0
雪    币: 324
活跃值: (57)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
夜班回家,验证了一下,发现不能对控件如:按钮,编辑框等进行截图,截到的只是等大黑块,列表控件与树控件则正常

这个不知前辈们有何解决之法?
2010-5-19 00:29
0
雪    币: 4399
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
你是直接对按钮的handle截图吧?如果对整个窗体截图应该是正常的。还有就是你的插件使用的不是mfc而是别的比如wpf的组件,wpf是dx绘制而不是gdi的。
办法我没研究过,对窗体截图,然后割取出控件所在的位置图片是最方便的了。
2010-5-19 08:05
0
雪    币: 324
活跃值: (57)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
谢谢你多次指点,在下不才,只会用也用惯了MFC,WPF只下载过只个例程,没深入过

要知道我做的是OllyDbg的插件,若在OllyDbg当前断点或当前eip前后的几行代码中获取到窗口句柄,还要回溯到最顶层窗口,才能对之正常截图,然后对按钮等子控件进行红框闪烁以指示该窗口句柄对应在的控件,但被调试程序被断点断下时,这很容易引起插件不响应
2010-5-19 13:06
0
雪    币: 324
活跃值: (57)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
16
这不是好方法,放弃,谢谢前辈们的方法,我另选他路了,结贴
2010-5-19 21:47
0
游客
登录 | 注册 方可回帖
返回
//