关于网上DFMirage Driver delphi 演示实例(书呆子)

asd杂草 2014-04-22 11:17:17
能启动驱动,但是想了很久,都不知道怎么得到数据,然后显示在Image上面
麻烦大神有时间的话,写个调用的小例子:启动驱动抓屏,得到数据,显示在Image上
http://blog.csdn.net/hero_yin/article/details/2972434
谢谢!
...全文
758 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
asd杂草 2014-04-24
  • 打赏
  • 举报
回复
引用 3 楼 Avan_Lau 的回复:
他这里传输的画面差异值,传输数据较小,因而更高效。 根据提供的几个record(相互之间是包含关系,自己理一下),你可以依据取到的坐标(在CHANGES_RECORD中)和颜色值,去填充画布或bitmap...循环处理....。
版主,看了你回复后,我写了下代码,不知为什么总是不对,麻烦看看代码有什么错误之处,还请指出,谢谢 首先,我把原单元注册表的路径修改了下, MINIPORT_REGISTRY_PATH = 'SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services'; 然后,我的调用方法如下

var
 i:Integer;
 a:TVideoDriver;
 b:bool;
 c:trect;
begin
    a:=TVideoDriver.Create;
    b:=True;
    c.Left:=0;
    c.Top:=0;
    c.right:=screen.Width;
    c.Bottom:=screen.Height;
    a.Activate(b,@c);
    a.MapSharedbuffers(b);

     for i:=0 to a.bufdata.buffer.counter -1 do
     begin
       with a.bufdata.buffer.pointrect[i] do
       begin
         image1.Picture.Bitmap.Canvas.brush.color:= color;
         Image1.Picture.Bitmap.Canvas.FillRect(rect);
         //Memo1.Lines.Add(IntToStr(rect.Top)+' '+IntToStr(rect.Left)+' '+IntToStr(rect.Right)+' '+IntToStr(rect.Bottom)+' '+ ColorToString(color));
       end;
     end;
  Image1.Refresh;
  a.UnMapSharedbuffers;
  a.Deactivate;
end;
出来的图是黑色,或者是乱色,麻烦各位大哥指点下,谢谢!
金卯刀 2014-04-23
  • 打赏
  • 举报
回复
他这里传输的画面差异值,传输数据较小,因而更高效。 根据提供的几个record(相互之间是包含关系,自己理一下),你可以依据取到的坐标(在CHANGES_RECORD中)和颜色值,去填充画布或bitmap...循环处理....。
asd杂草 2014-04-22
  • 打赏
  • 举报
回复
先up一下,不知道大牛有没有空呢
asd杂草 2014-04-22
  • 打赏
  • 举报
回复
这问题,到底是很复杂高手没出现呢,还是很简单没人想答,还是网上很多答案呢.... 怎么没人呢

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧