首页
社区
课程
招聘
[旧帖] [求助]PrintWindow截图总是不正确 0.00雪花
发表于: 2013-3-23 20:37 6607

[旧帖] [求助]PrintWindow截图总是不正确 0.00雪花

2013-3-23 20:37
6607
编译器是RADASM,思路就是用PrintWindow后台截图(由于masm32里的user32库文件没有PrintWindow的地址,所以手动加载了一下,这里还要谢谢论坛里帮助我的那些大牛,真的很感谢),图能截出来,尺寸也是窗口大小的尺寸,但就是只截了部分窗口的图,其他地方都是黑色的,部分代码如下:
_GameCtrl	proc	
		local	ClientRect:RECT
		LOCAL	@hDc
		LOCAL	@hBmp
		LOCAL	@hUser32
		LOCAL	@PrintWindow		
		
;********************************************************************
;查找窗口
;********************************************************************
		invoke	FindWindow,NULL,offset szGameName
		mov	hClient,eax
		.if	eax != 0
;********************************************************************
;把窗口移出屏幕
;********************************************************************

			invoke	GetSystemMetrics,SM_CXSCREEN
			mov	SysSizeX,eax
			invoke	GetSystemMetrics,SM_CYSCREEN
			mov	SysSizeY,eax
			invoke	GetWindowRect,hClient,addr ClientRect
			mov	ebx,ClientRect.left
			mov	ClientRectX,ebx
			mov	ebx,ClientRect.top
			mov	ClientRectY,ebx
			mov	ebx,ClientRect.right
			sub	ebx,ClientRect.left	
			mov	ClientRectW,ebx
			mov	ebx,ClientRect.bottom
			sub	ebx,ClientRect.top
			mov	ClientRectH,ebx
			invoke	SetWindowPos,hClient,NULL,SysSizeX,SysSizeY,0,0,SWP_NOSIZE or SWP_NOACTIVATE or SWP_SHOWWINDOW
;********************************************************************
;创建hDC并关联位图hDC
;********************************************************************
			invoke	GetWindowDC,hClient
			mov	hClientDc,eax
			invoke	CreateCompatibleDC,hClientDc
			mov	@hDc,eax
			invoke	CreateCompatibleBitmap,hClientDc,ClientRectW,ClientRectH
			mov	@hBmp,eax
			invoke	SelectObject,@hDc,@hBmp
		;加载并调用PrintWindow
			invoke	LoadLibrary,offset szText    ;szText='user32.dll',0
			mov	@hUser32,eax
			invoke	GetProcAddress,@hUser32,offset szText1    ;szText1='PrintWindow',0
			mov	@PrintWindow,eax
			push	PW_CLIENTONLY
			push	@hDc
			push	hClient
			call	@PrintWindow


;********************************************************************
;将窗口截图复制到剪切板
;********************************************************************
			invoke	OpenClipboard,NULL
			invoke	EmptyClipboard
			invoke	SetClipboardData,CF_BITMAP,@hBmp
			invoke	CloseClipboard
			invoke	DeleteDC,@hDc
			invoke	DeleteObject,@hBmp
			invoke	ReleaseDC,NULL,hClientDc


截出来的图如下:


这到底是为什么啊?困扰我好几天了,差了很多资料都不知道

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 442
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
猜猜你又是一个外挂高手的潜力股
2013-3-24 09:16
0
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
怎么没有人理我啊
2013-3-24 20:42
0
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
还没有人知道是什么问题吗?
2013-3-28 20:04
0
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
自己解决了...原来传递给PrintWindow的第三个参数uFlags是PW_CLIENTONLY的话会有问题,就像上面那个,改成0就没问题了....困扰我这么多天啊...
2013-3-29 20:40
0
游客
登录 | 注册 方可回帖
返回
//