前面说到汇编仅仅用一个API就实现窗口重绘..
https://shadowkong.com/archives/104
今天再次用汇编尝试屏幕重绘 虽然效果一样 但是用到的API大有不同~
整个屏幕重绘的关键代码:
invoke GetDC,hWin2
mov @hDc2,eax;
invoke CreateDC,addr szDriver,NULL,NULL,NULL
mov @hDc1,eax;
invoke GetClientRect,hWin2,addr @stRect
invoke BitBlt,@hDc2,0,0,@stRect.right,@stRect.bottom,\
@hDc1,0,0,SRCCOPY
invoke ReleaseDC,hWin2,@hDc2
invoke DeleteDC,@hDc1
窗口重绘和屏幕重绘分别用到不同的API配对~
说实话屏幕重绘其实就是那么简单~
但是我额外给它加了个功能:
屏幕响应窗口按键~
也就是相当于QQ远程协助中的远程控制…
当然这里只实现了简单的 鼠标键键和鼠标指针移动…
上图上图..
原理在于:
用特别的API获取屏幕句柄~
.elseif eax== WM_CREATE
invoke GetDesktopWindow
mov WindowHwnd,eax
然后通过处理窗口按键时候的坐标在屏幕相应坐标响应事件~
mov eax,@stPoint.y
shl eax,16
add eax,@stPoint.x
invoke PostMessage,WindowHwnd,WM_LBUTTONDOWN,MK_LBUTTON,eax
invoke PostMessage,WindowHwnd,WM_LBUTTONUP,0,eax
呃 就是这样…
基本原理就是这样…
更深入的问题是:
如何是它能实现响应IO消息?
如何与HOOK联合起来形成屏幕监视?
如何与网编联合起来实现类似远程控制?
这涉及到TCP\IP协议族的图片传输问题..(暂时不能解决)