远程控制篇:抓取远程屏幕图像
远程控制篇:抓取远程屏幕图像
{抓屏幕图像,保存为内存流--bmp流,压缩bmp流,jpg流,以及使用流}
{在网络中传送bmp流和jpg流的速度没测试过}
{bmp流的压缩是无损压缩}
{
全局变量
memorystream:tmemorystream;
memorystream:=tmemorystream.create;
}
var
image:timage;
jpgstream:tjpegimage;
ss:tcanvas;
begin
ss:=tcanvas.create;
ss.handle:=getdc(0);
image:=timage.create(self);
image.width:=screen.width;
image.height:=screen.height ;
image.picture.bitmap.pixelformat:= pf16bit;
bitblt(image.canvas.handle,0,0,image.width,image.height,ss.handle,0,0,srccopy);
{大大的原始bmp流
image.picture.bitmap.savetostream(memorystream);
}
{无损压缩bmp流 uses zlib.pas
{先定义变量count,deststream,sourcestream}
image.picture.bitmap.savetostream(memorystream);
count:=memorystream.size;
deststream:=tmemorystream.create;
{压缩方式:clnone,clfastest,cldefault,clmax}
sourcestream:=tcompressionstream.create(cldefault, deststream);
try
memorystream.savetostream(sourcestream);
sourcestream.free;
memorystream.clear;
memorystream.writebuffer(count, sizeof(count));
memorystream.copyfrom(deststream, 0);
finally
deststream.free;
end;
}
{jpg流 uses jpeg
jpgstream:= tjpegimage.create;
jpgstream.assign(image.picture.bitmap);
jpgstream.compressionquality:=50; {压缩质量}
jpgstream.compress;
jpgstream.savetostream(memorystream);{保存为jpg流}
jpgstream.free;
}
releasedc(0,ss.handle);
image.free;
{发送内存流...}
-----------------------------------------------------
{接收内存流...}
{使用bmp流
image.picture.bitmap.loadfromstream(bmpstream);}
{还原压缩的bmp流 uses:zlib.pas
先定义变量count,buffer,deststream,sourcestream
memorystream是压缩的bmp流
memorystream.readbuffer(count, sizeof(count));
getmem(buffer, count);
deststream:=tmemorystream.create;
sourcestream:=tdecompressionstream.create(memorystream);
try
sourcestream.readbuffer(buffer^, count);
deststream.writebuffer(buffer^, count);
deststream.position:=0;
image.picture.bitmap.loadfromstream(deststream);
finally
freemem(buffer);
deststream.free;
end;
}
使用jpg流 image.picture.assign(jpgstream);
--------------------------------------------
湖北襄樊 官本和(gbh12345@china.com) 2001.4
详见主页源程序:
http://delphi21cn.yeah.net
http://personal.hb.cninfo.net/~gbh
- · 有了网络监控 网络自由还会有吗?
- · 将某一主机域名解析为IP地址。
- · TWebBrowser流程讲解及如何判断下载网页成功
- · Kylix预览
- · 关于WEB应用程序的打印组件开发初探
- · 让你的“小猫”发传真技巧攻略
- · 安全技术:基于ARP欺骗的TCP伪连接DOS
- · 如何关闭端口防止病毒与黑客入侵
- · 运行多个系统 全线引爆虚拟机VMware
- · IE7 Build 5299 RSS新功能抢先看
- · 一些Windows系统安全配置方法
- · 网管必知 防溢出提权攻击解决办法
- · 自己动手做服务器安全(初级篇)
- · 披着“羊皮”的狼 TXT下的病毒阴谋
- · 让系统安全起来 把间谍软件请出硬盘
- · 简单三步走堵死SQLServer注入漏洞
- · 从细微处做起 全面打造系统安全
- · Windows上网后速度越来越慢怎么办?
- · 如何让让IE6也能实现反“钓鱼”
- · 上网安全 谨防ActiveX插件成病毒帮凶
- · 解析Windows Vista 5270的UAP功能
- · 世界之窗对决GB:浏览器截图功能比拼
- · 小技巧御大敌:如何防止IE被恶意修改
- · 在Cisco交换机上实现隔离访问
- · 与一个黑客的较量
- · 办公室共用电脑系统安全防范攻略
- · 一种“您无权查看该网页”的原因和解决方法
- · SQL注入程序带来的攻击及防范
- · 学习心得 TCP/IP攻击原理分析总结
- · SQL注入技术和跨站脚本攻击的检测
- · 真正安全起来 网页脚本攻击防范全攻略
- · 视频:ADSL宽带共享上网 2
- · 突破网络限制之三十六计篇
- · ADSL上网的常见问题及分析集锦
- · 视频:ADSL宽带共享上网
- · Windows系统中常见网络故障与解决方法
- · 揭开ADSL真正速度之谜:宽带到底该有多快
- · 网络管理之IP地址篇
- · 网络管理之网关篇
- · 一步一步学习代理服务器
- · 网络安全基础:防火墙的概念及实现原理
- · FTP登录错误详解
- · 测试网络通断的另类方法
- · 基于短信网关WAP推送的实现
- · 我写CC DDOS攻击器的思路及防范方法
- · 雅虎拟加强交友网站安全 防止成员账号泄露
- · ADSL常见问题精彩问答
- · 上网不用防火墙!一招克死所有病毒
- · SANS发布2005全球20大网络安全隐患排行
- · IE7将会采用Firefox的RSS Feed图标
- · 利用Google作黑客攻击的原理和防范
- · 知己知彼 解析远程控制带来的安全危险
- · 上网要当心!HTML文件也能格式化硬盘
- · 精解网络中IP地址与域名含义
- · 网管必知 如何设置虚拟主机访问权限
- · 手把手教你用代理
- · PHP在XP下IIS和Apache2服务器上的安装
- · 另辟蹊径:Windows系统防病毒另类高招
- · 经验共享—给闪存杀毒的另类方法一则
- · 用HelixProducer实现局域网内现场直播

