快速远程屏幕传输Indy10版

Delphi局域网聊天_INDY控件的使用实例 内容索引:Delphi源码,网络相关,聊天,局域网  Delphi局域网聊天,界面看上去还不错,模仿QQ窗体的,这里主要是练习INDY这个超级的Internet控件集,因此程序编译时你必须导入它才对哦,请到网上自行下载。 立即下载

//主要思路是guanyueguan(BCB_DG)http://iamgyg.blog.163.com的高速屏传代码

这是其中主要的代码

unit UntMonitorThread;

interface

uses
IdTCPClient, Classes, windows,Graphics,ZLibEx,IdGlobal;


const
DEF_STEP = 19;
OFF_SET = 24;

type
PCapCmd = ^TCapCmd;
TCapCmd = packed record
    Cmd:    Byte;
    Size:   Integer;
    Width: Word;
    Height: Word;
end;

    PCtlCmd = ^TCtlCmd;
TCtlCmd = packed record
    Cmd: Byte;
    X, Y: Word;
end;

TStripMonitorThread = class(TThread)
private
    FScrStream: TMemoryStream;
    FSendStream: TMemoryStream;
    FFullBmp, FLineBmp, FRectBmp: TBitmap;
    FWidth, FHeight, FLine: Integer;
    FRect: TRect;
    FDC: HDC;
    FSocket: TIdTCPClient;
    FCmd: TCapCmd;
    FPixelFormat: TPixelFormat;
    FIncSize: Byte;
    first:boolean;
    //
    function CheckScr: Boolean;
    function GetFirst: Boolean;
    function GetNext: Boolean;
    function Compress: Boolean;
    function SendInfo: Boolean;
    function SendData: Boolean;
    procedure CopyRect(rt: TRect);
    procedure SetPixelFormat(Value: TPixelFormat);


protected
    procedure Execute; override;
public
    constructor Create;
    destructor Destroy; override;
    property Socket: TIdTCPClient read FSocket;
    property PixelFormat: TPixelFormat read FPixelFormat write SetPixelFormat;
end;

implementation

uses Unit1,DisposalCmdUnit;

constructor TstripMonitorThread.Create;
begin
inherited Create(true);

FSocket:=TIdTCPClient.Create(nil);
//Fsocket.IOHandler.RecvBufferSize:= 4096;
// Fsocket.IOHandler.SendBufferSize:= 4096;
//Fsocket.ReadTimeout:=15000;
FScrStream   := TMemoryStream.Create;
FSendStream := TMemoryStream.Create;
FFullBmp := TBitmap.Create;
FLineBmp := TBitmap.Create;
FRectBmp := TBitmap.Create;
FWidth   := 0;
FHeight := 0;
FIncSize := 4;
//case ThisPicPixFmt of //转换的像素颜色位 1 2 4 8 16 24 32
FPixelFormat := pf8bit;
   // 5: FPixelFormat := pf32bit;
// else
   // FPixelFormat := pf32bit;
// end;
FreeOnTerminate := True; //主动释放,不是自动释放
Suspended := False; //立即执行
ScreenOver:=True;
end;

destructor TStripMonitorThread.Destroy;
begin
FSocket.Free;
ScreenOver:=false;
FScrStream.Free;
FSendStream.Free;
FRectBmp.Free;
FFullBmp.Free;
FLineBmp.Free;
inherited destroy;
end;

procedure TStripMonitorThread.Execute;
var
CmdBuf: array[0..SizeOf(TCtlCmd) - 1] of Byte;
pt: TPoint;
Request:string;
buf:TidBytes;
begin
   if form1.ConRpcport(FSocket) then
   begin
     try
       FSocket.IOHandler.Write('002'+EOL);
     except
       FSocket.Free;
       Exit;
     end;
     Request:=FSocket.IOHandler.ReadLn(EOL);
   end;
   if CheckScr then First :=true;
   try
     repeat
      FSocket.IOHandler.ReadBytes(buf, SizeOf(TCtlCmd));
      BytesToRaw(buf,CmdBuf,sizeof(TCtlCmd));
      if TCtlCmd(CmdBuf).Cmd in [1..5] then
      begin
        pt := Point(TCtlCmd(CmdBuf).X, TCtlCmd(CmdBuf).Y);
        SetCursorPos(pt.X, pt.Y);
        SetCapture(WindowFromPoint(pt));
      end;
      case TCtlCmd(CmdBuf).Cmd of
        8: if First then GetFirst else GetNext;
        0: PixelFormat := TPixelFormat(TCtlCmd(CmdBuf).X);
        1: ;//mouse move
        2: mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        3: mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
        4: mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
        5: mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
        6: keybd_event(Byte(TCtlCmd(CmdBuf).X), MapVirtualKey(Byte(TCtlCmd(CmdBuf).X), 0), 0, 0);
        7: keybd_event(Byte(TCtlCmd(CmdBuf).X), MapVirtualKey(Byte(TCtlCmd(CmdBuf).X), 0), KEYEVENTF_KEYUP, 0);
      end;
     until FSocket.Connected=False;
   except
   end;
   FSocket.Disconnect;
end;


function TStripMonitorThread.CheckScr: Boolean;
var
nWidth, nHeight: Integer;
begin
Result := False;
nWidth := GetSystemMetrics(SM_CXSCREEN);//取得屏幕长宽
nHeight := GetSystemMetrics(SM_CYSCREEN);
if (nWidth <> FWidth) or (nHeight <> FHeight) then
begin
    FWidth := nWidth;
    FHeight := nHeight;
    FFullBmp.Canvas.Lock;
    FLineBmp.Canvas.Lock;
    FRectBmp.Canvas.Lock;
    FFullBmp.Width := FWidth;
    FFullBmp.Height := FHeight;
    FLineBmp.Width := FWidth;
    FLineBmp.Height := 1;
    FFullBmp.PixelFormat := FPixelFormat;
 &nbs

delphi INDY控件使用指南 不错的Indy 资料。优快云上有人上传过了。他说的十分。我下了,看了看写的不错,还整理了下。要想学习Indy9的话可以下来看看。 立即下载

相关推荐

delphi开发的一个高速屏幕传输演示代(功能很强大)!!!

delphi开发的一个高速屏幕传输演示代(功能很强大)

DELPHI 远程屏幕传输技术.分块,隔行扫描方式快速传输

DELPHI 远程屏幕传输技术.分块,隔行扫描方式快速传输 里面包括C语言和DELPHI的源码 主要是传输变化部分,那么占用带宽就相应变小了.

indy10 最新官方例子

indy10 最新官方例子,绝对可用2013年2月版本

indy10_demosindy10_demos

indy10_demosindy10_demos

LineCapShow.rar_屏幕 delphi_视频传输_远程_远程传输_远程屏幕传输

远程屏幕传输 (差异截图),一个远程视频传输的简单实现代码,用到DSPACK控件.

H3C防火墙旁路部署实战:网关迁移到防火墙后,如何配置DHCP和VLAN间隔离策略?

本文详细介绍了H3C防火墙旁路部署实战,重点讲解网关迁移到防火墙后的DHCP配置和VLAN间隔离策略。通过实际案例和配置示例,帮助网络工程师解决传统核心交换机架构的性能瓶颈和安全管控问题,实现精细化访问控制。

weixin_42549451的博客 416

Word | 简单可操作的快捷公式编号、右对齐和引用方法

在理工科论文的写作中,涉及到大量的公式输入,我们希望能够按照章节为公式进行编号,并且实现公式居中,编号右对齐的效果。网上有各种各样的方法来实现,操作繁琐和简单的混在一起,让没有接触过公式编号的人感觉比较混乱。笔者自己博览相关博客,亲身实践,总结出一套自认为比较简便的公式编号、对齐和引用方法,在这里分享给大家~

qq_43466146的博客 3万+

nRF开发环境搭建全攻略:VS Code + nRF Connect SDK + Zephyr实战

嵌入式开发中,环境配置往往是新手入门的第一道障碍,尤其面对基于Zephyr RTOS的Nordic nRF平台时,工具链的复杂度常让人望而却步。理解构建系统、SDK版本管理和调试工具之间的协作关系,是高效开发的前提。Zephyr作为开源实时操作系统,通过设备树和Kconfig实现硬件描述与功能配置,而nRF Connect SDK(NCS)则是Nordic基于Zephyr的增强发行版,两者结合为物联网开发提供了强大支持。基于VS Code搭建开发环境,配合west工具管理多仓库、CMake/Ninja执行构

weixin_29188997的博客 227

【故障排查】telnet连接失败:端口23不可达的深度分析与解决方案

本文深度剖析了telnet连接失败,特别是端口23不可达的常见原因与系统性解决方案。文章从客户端本地配置、服务器端服务与防火墙、中间网络路径三个层面,提供了详细的排查步骤与命令,并强调了Telnet协议的安全风险,建议使用SSH等更安全的替代方案进行远程管理与端口测试。

weixin_29306011的博客 898

CZT与FFT频谱分析方法对比:从任意频带重采样到高精度频谱分析

M = 85 % 输出点数f0 = 70 Hz % 起始频率DELF = 0.4 Hz % 频率步长频率分辨率提高到0.4 Hz分析带宽聚焦在[70, 103.6]Hz更清晰地分辨出78Hz和82Hz的频率分量。

2403_88098319的博客 1859

Claude Code 官方文档+3 个高活跃社区+5 个可复用开源项目:14.4 节持续学习资源实测清单

揭示 Claude Code 的核心交互范式是「状态机驱动的对话式编程」,强调官方文档实为配置契约、社区是直觉验证场、开源项目是配置能力校准器;通过真实故障案例解析上下文丢失根源,提出以工程化方式管理 claude.config.json、CLAUDE.md 和技能配置。

weixin_28728443的博客 326

OpenHarmony WiFi子系统全解析:从架构到代码实现(大合集)

头文件路径[相对路径][相对路径][相对路径][相对路径]// 网络配置结构 (wifi_device_config.h)// SSID字符串// 预共享密钥// 安全类型// 网络ID// 优先级// 是否隐藏网络// 扫描信息结构 (wifi_scan_info.h)// SSID// BSSID (MAC地址)// 安全类型int rssi;// 信号强度// 频率// 信道宽度// 时间戳// 连接信息结构 (wifi_linked_info.h)

m0_67505153的博客 1059

Altium Designer (AD) 设计软件高频面试题及参考答案(3万字长文)

在Altium Designer(AD)中,设计复用是一种关键的策略,它允许设计师在多个项目中重复使用经过验证的设计元素,如原理图符号、PCB布局、元器件封装和设计规则集。在Altium Designer (AD) 中,手动布线和交互式布线是PCB设计中常见的两种布线模式,它们提供了设计师对布线路径的直接控制,特别是在处理复杂或关键信号路径时尤为有用。在Altium Designer (AD) 中进行电路级仿真是一项重要的设计验证步骤,它允许设计师在实际制造之前对电路的行为进行预测和分析。

大模型大数据攻城狮的专栏 4782

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 高级语言实现文件感染的方法
下一篇: 用户提信客户端
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值