远程桌面 服务器握手,《易语言远程控制技术教程》第2课_远程桌面(你的桌面我作主)王军...

.版本 2

.支持库 Exmlrpc

.支持库 eAPI

.程序集 窗口程序集_服务端

.程序集变量 服务端, 远程服务

.程序集变量 集_客户句柄, 整数型

.程序集变量 集_宽度, 整数型

.程序集变量 集_高度, 整数型

.程序集变量 集_时钟毫秒, 整数型

.程序集变量 Token, 整数型

.程序集变量 ImageFormat, 整数型

.程序集变量 集_格式, 整数型

‘易语言远程控制程序受控端源码教程

.子程序 __启动窗口_创建完毕

.局部变量 GpInput, GdiplusStartupInput

GpInput.GdiplusVersion = 1

GdiplusStartup (Token, GpInput, 0)  ' 启动

GDI+

ImageFormat = 5

_按钮1_被单击 ()  ' 启动服务

集_宽度 = 取屏幕宽度 ()

集_高度 = 取屏幕高度 ()

集_格式 = 2  ' JPG格式

‘易语言远程控制程序受控端源码教程

.子程序 _按钮1_被单击

.如果真 (服务端.置线程池大小 (5, 20) = 假)

信息框 (“设置服务器失败”, 0,

)

返回 ()

.如果真结束

.如果 (服务端.启动 (到数值 (编辑框_端口号.内容), &服务中心, 假))

' 真 = 并行处理,假 = 串行处理

加入消息内容 (“已启动服务端...端口号:”

+ 编辑框_端口号.内容)

加入消息内容

(“已准备好,等待客户机连接...”)

.否则

加入消息内容 (“启动错误”)

.如果结束

‘易语言远程控制程序受控端源码教程

.子程序 服务中心

.参数 请求信息地址, 整数型

.局部变量 字节集数据, 字节集

.局部变量 头部标识, 文本型

.局部变量 分开内容, 文本型, , "0"

.局部变量 客户IP地址, 文本型

.局部变量 客户代码, 文本型

.局部变量 真正字节集数据, 字节集

编辑框_请求信息地址.内容 = 到文本 (请求信息地址)

.判断开始 (服务端.取消息类型 (请求信息地址) = 0)

加入消息内容 (到文本 (取现行时间 ()) +

“  ” + “有客户连接”)

.如果真 (服务端.取客户句柄 (请求信息地址,

集_客户句柄) = 真)

编辑框_客户句柄.内容 = 到文本 (集_客户句柄)

.如果真 (服务端.取客户IP (集_客户句柄, 客户IP地址))

编辑框_对方IP.内容 = 客户IP地址

.如果

(转换为主机名 (客户IP地址) = “localhost”)

编辑框_名称.内容 = 取主机名 ()

.否则

编辑框_名称.内容 = 转换为主机名

(客户IP地址)

.如果结束

.如果真结束‘易语言远程控制程序受控端源码教程

.如果真结束

.如果真 (服务端.发送字节集 (集_客户句柄,

到字节集 (“握手”)) = 假)

信息框 (“发送数据失败!”, 0, )

.如果真结束

返回 ()

.判断 (服务端.取消息类型 (请求信息地址) = 1)

加入消息内容 (“消息:” +

“有客户主动或意外断开与服务端的连接”)

时钟1.时钟周期 = 0

编辑框_对方IP.内容 = “”

编辑框_名称.内容 = “”

编辑框_客户句柄.内容 = “”

编辑框_请求信息地址.内容 = “”

加入消息内容 (到文本 (取现行时间 ()) +

“  ” + “连接已断开”)

返回 ()‘易语言远程控制程序受控端源码教程

.判断 (服务端.取消息类型 (请求信息地址) = 2)

加入消息内容 (“消息:” +

“客户端发送字节流到服务器”)

.判断 (服务端.取消息类型 (请求信息地址) = -1)

加入消息内容 (“消息:” +

“异常出错”)

.默认

.判断结束

.如果 (服务端.取请求字节集 (请求信息地址, 客户代码, 字节集数据) = 假)

加入消息内容 (“消息:” +

“取字节集错误!” + 到文本 (取字节集长度 (字节集数据)) + 到文本 (字节集数据))

.否则

加入消息内容 (“消息:” + “取到字节集!”

+ 到文本 (取字节集长度 (字节集数据)) + 到文本 (字节集数据))

.如果结束

头部标识 = 到文本 (取字节集左边 (字节集数据, 4))

加入消息内容 (“头部标识 = ” + 头部标识)

真正字节集数据 = 取字节集右边 (字节集数据, 取字节集长度 (字节集数据) - 4)

.判断开始 (头部标识 = “比例”)‘易语言远程控制程序受控端源码教程

加入消息内容 (到文本 (取现行时间 ()) +

“  ” + “比例” + 到文本

(真正字节集数据))

集_宽度 = 取整 (取屏幕宽度 () ×

到数值 (到文本 (真正字节集数据)) ÷ 100)

集_高度 = 取整 (取屏幕高度 () ×

到数值 (到文本 (真正字节集数据)) ÷ 100)

.判断 (头部标识 = “格式”)

加入消息内容 (到文本 (取现行时间 ()) +

“  ” + “格式” + 到文本

(真正字节集数据))

.如果 (到大写 (到文本 (真正字节集数据))

= “JPG”)

集_格式 = 2  ' JPG格式

单选框_JPG.选中 = 真

单选框_GIF.选中 = 假

.否则

集_格式 = 3  ' GIF格式

单选框_JPG.选中 = 假

单选框_GIF.选中 = 真

.如果结束

集_高度 = 取屏幕高度 () × 到数值

(到文本 (真正字节集数据))

.判断 (头部标识 = “毫秒”)

集_时钟毫秒 = 到数值 (到文本

(真正字节集数据))

时钟1.时钟周期 = 到数值 (到文本

(真正字节集数据))

加入消息内容 (到文本 (取现行时间 ()) +

“  ” + “毫秒” + 到文本

(真正字节集数据))

.判断 (头部标识 = “远控”)

加入消息内容 (到文本 (取现行时间 ()) +

“  ” + “远控” + 到文本

(真正字节集数据))

时钟1.时钟周期 = 到数值 (到文本

(真正字节集数据))

.判断 (头部标识 = “停止”)‘易语言远程控制程序受控端源码教程

加入消息内容 (到文本 (取现行时间 ()) +

“  ” + “停止”)

时钟1.时钟周期 = 0

.判断 (头部标识 = “鼠标”)

分开内容 = 分割文本 (到文本

(字节集数据), “,”, )

模拟鼠标点击 (到数值 (分开内容 [1]) ×

取屏幕宽度 (), 到数值 (分开内容 [2]) × 取屏幕高度 (), 到数值 (分开内容 [2]))

_时钟1_周期事件 ()

时钟1.时钟周期 = 0

时钟1.时钟周期 = 集_时钟毫秒

.判断 (头部标识 = “按键”)

模拟按键 (到数值 (字节集数据), ,

)

_时钟1_周期事件 ()

时钟1.时钟周期 = 0

时钟1.时钟周期 = 集_时钟毫秒

.默认‘易语言远程控制程序受控端源码教程

.判断结束

.子程序 加入消息内容

.参数 新文本, 文本型

.如果真 (取文本长度 (编辑框_历史消息.内容) ≥ 30000)

编辑框_历史消息.内容 = “”

.如果真结束

编辑框_历史消息.内容 = 新文本 + #换行符 + 编辑框_历史消息.内容

.子程序 _时钟1_周期事件

.局部变量 屏幕快照, 字节集

.局部变量 压缩字集, 字节集, , , JPG或GIF

.判断开始 (单选框_JPG.选中 = 真)

屏幕快照 = 快照 (, 集_宽度,

集_高度)

加入消息内容 (到文本 (取现行时间 ()) +

“  快照长度:” + 到文本 (取字节集长度

(屏幕快照)))

.如果真 (转换图像格式 (屏幕快照, 2,

压缩字集) = 假)

加入消息内容 (“转换不成功!”)

.如果真结束‘易语言远程控制程序受控端源码教程

.判断 (单选框_GIF.选中 = 真)

屏幕快照 = 快照 (, 集_宽度,

集_高度)

加入消息内容 (到文本 (取现行时间 ()) +

“  快照长度:” + 到文本 (取字节集长度

(屏幕快照)))

.如果真 (转换图像格式 (屏幕快照, 3,

压缩字集) = 假)

加入消息内容 (“转换不成功!”)

.如果真结束

.默认

.判断结束

编辑框_快照大小.内容 = 到文本 (取字节集长度 (压缩字集))‘易语言远程控制程序受控端源码教程

.如果真 (服务端.发送字节集 (集_客户句柄, 到字节集 (“图像”) + 压缩字集) = 假)

加入消息内容

(“发送图像不成功!”)

.如果真结束

加入消息内容 (到文本 (取现行时间 ()) + “  发送长度:” + 到文本 (取字节集长度 (压缩字集)))

.子程序 转换图像格式, 逻辑型, , 支持bmp、jpg、gif、tiff、png互转。

.参数 图像数据, 字节集, , 被转换的图像数据

.参数 转换格式, 整数型, , 转换后的图片格式。1、bmp;2、jpg;3、gif;4、tiff;5、png

.参数 新图像, 字节集, 参考, 用于保存新图像的变量

.局部变量 Clsid, 字节集

.局部变量 pStr, 文本型

.局部变量 nLength, 整数型

.局部变量 hMem, 整数型

.局部变量 Stream, 对象

.局部变量 lpvoid, 整数型

.局部变量 pStream, 整数型

.局部变量 bitmap, 整数型

.局部变量 DataStream, 对象

.局部变量 hMemDataStream, 整数型‘易语言远程控制程序受控端源码教程

.局部变量 pDataStream, 整数型

.局部变量 nStreamSize, 整数型

.局部变量 bRet, 逻辑型

.判断开始 (转换格式 = 1)  ' bmp

pStr =

“{557CF400-1A04-11D3-9A73-0000F81EF32E}”

.判断 (转换格式 = 2)  ' jpg

pStr =

“{557CF401-1A04-11D3-9A73-0000F81EF32E}”

.判断 (转换格式 = 3)  ' gif

pStr =

“{557CF402-1A04-11D3-9A73-0000F81EF32E}”

.判断 (转换格式 = 4)  ' tiff

pStr =

“{557CF405-1A04-11D3-9A73-0000F81EF32E}”

.判断 (转换格式 = 5)  ' png

pStr =

“{557CF406-1A04-11D3-9A73-0000F81EF32E}”

.默认

.判断结束

Clsid = 取空白字节集 (16)

CLSIDFromString (A2W (pStr), Clsid)  '

获取图像格式对应的Clsid

nLength = 取字节集长度 (图像数据)

hMem = GlobalAlloc (#GMEM_FIXED, nLength)  '

申请内存

CreateStreamOnHGlobal (hMem, 真, Stream)  '

创建流对象

lpvoid = GlobalLock (hMem)  '

锁定该区域,获得存放数据的地址

写到内存 (图像数据, lpvoid, nLength)  '

把数据写到流里面

GlobalUnlock (hMem)  ' 取消锁定

pStream = GetObjectPtr (Stream, Stream, 0)  '

获得流对象指针‘易语言远程控制程序受控端源码教程

GdipCreateBitmapFromStream (取字节集数据 (指针到字节集 (pStream, 4), #整数型,

1), bitmap)  ' 创建位图对象

CreateStreamOnHGlobal (0, 真, DataStream)

pStream = GetObjectPtr (DataStream, DataStream, 0)

pStream = 取字节集数据 (指针到字节集 (pStream, 4), #整数型, 1)

GdipSaveImageToStream_int (bitmap, pStream, Clsid, 0)

' 这里是图像格式转换的关键。把位图按指定格式保存到数据流里面

GetHGlobalFromStream_int (pStream, hMemDataStream)

' 获得数据流句柄

pDataStream = GlobalLock (hMemDataStream)  '

获得数据指针

nStreamSize = GlobalSize (hMemDataStream)  '

获取数据大小

.如果真 (pDataStream ≠ 0)

新图像 = 取空白字节集

(nStreamSize)

CopyMemory (新图像,

pDataStream, nStreamSize)  ' 复制到字节集里

bRet = 真

.如果真结束

' 别忘记下面释放资源的函数,否则造成内存泄漏

GlobalUnlock (hMemDataStream)

GdipDisposeImage (bitmap)

GlobalFree (hMem)‘易语言远程控制程序受控端源码教程

返回 (bRet)

.子程序 A2W, 字节集, , 将Ansi转成Unicode

.参数 欲转换的文本, 文本型

.局部变量 缓冲区, 字节集

.局部变量 缓冲区大小, 整数型

缓冲区大小 = MultiByteToWideChar (0, 0, 欲转换的文本, -1, {

}, 0) × 2

缓冲区 = 取空白字节集 (缓冲区大小)

MultiByteToWideChar (0, 0, 欲转换的文本, 取文本长度 (欲转换的文本), 缓冲区,

缓冲区大小)

返回 (缓冲区)

.子程序 __启动窗口_将被销毁

时钟1.时钟周期 = 0

服务端.停止 ()

_启动窗口.标题 = “服务关闭”

.子程序 _按钮2_被单击

.如果 (服务端.发送字节集 (到数值 (编辑框_客户句柄.内容), 到字节集 (“消息|你的电脑已被黑!”)) =

真)

加入消息内容

(“成功:发送消息成功!”)‘易语言远程控制程序受控端源码教程

.否则

加入消息内容

(“失败:发送消息失败!”)

.如果结束

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值