怎么用易语言制作控制端和被控端

如题
2024年11月29日 02:40
有3个网友回答
网友(1):

源码已经上传了,里面包含模块以及例程,所以有点贵。。。如果不想付财富值,我有源码:

控制端:

.版本 2
.支持库 iext

.程序集 窗口程序集_启动窗口
.程序集变量 数据_程序集, 字节集, , , 储存接受到得数据
.程序集变量 文件管理_当前目录, 文本型, , , 储存当前访问的目录
.程序集变量 服务管理_文件头, 文本型

.子程序 _退出_被选择

结束 ()


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


动态标题 ()

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

' 移除皮肤 ()

.子程序 动态标题

置随机数种子 ()
_启动窗口.标题 = 字符 (取随机数 (65, 90)) + 到文本 (取随机数 (0, 10)) + 字符 (取随机数 (65, 90)) + 到文本 (取随机数 (0, 10)) + 字符 (取随机数 (65, 90)) + 到文本 (取随机数 (0, 10))


.子程序 _工具条1_被单击
.参数 按钮索引, 整数型

.判断开始 (按钮索引 = 12)  ' 关于
    载入 (窗口2, , 假)
.判断 (按钮索引 = 10)  ' 退出
    结束 ()
.判断 (按钮索引 = 2)  ' 屏幕截图
    载入 (屏幕截图, , 假)
.判断 (按钮索引 = 4)  ' 视频捕获
    载入 (视频捕获, , 假)

.默认

.判断结束



.子程序 _服务器1_客户进入
.局部变量 temp, 文本型

temp = 服务器1.取回客户 ()
列表框1.插入项目 (列表框1.取项目数 (), temp, )
播放音乐 (“sound\login.wav”, )

.子程序 _服务器1_客户离开
.局部变量 temp, 文本型
.局部变量 i

temp = 服务器1.取回客户 ()
.计次循环首 (列表框1.取项目数 (), i)
    .如果真 (列表框1.取项目文本 (i - 1) = temp)
        列表框1.删除项目 (i - 1)
        .如果真 (当前控制客户 = temp)
            播放音乐 (“sound\offline.wav”, )
            当前控制客户 = “”
            跳出循环 ()
        .如果真结束


    .如果真结束

.计次循环尾 ()

.子程序 _服务器1_数据到达
.局部变量 temp, 字节集

temp = 服务器1.取回数据 ()
.如果真 (取字节集右边 (temp, 4) = 到字节集 (“over”))
    数据_程序集 = 数据_程序集 + 取字节集左边 (temp, 取字节集长度 (temp) - 4)
    输出调试文本 (“已经接收到over : ” + 到文本 (取字节集长度 (数据_程序集)))
    处理数据 (数据_程序集)
    数据_程序集 = {  }
    返回 ()
.如果真结束
数据_程序集 = 数据_程序集 + temp
输出调试文本 (“这里是临时字节 : ” + 到文本 (取字节集长度 (数据_程序集)))
返回 ()
' 以下为过期代码.暂保留.......
' *** 缩略程序块 ***
' ' 临时测试区
' ' 输出调试文本 (取字节集右边 (temp, 取字节集长度 (temp) - 4))
' ' temp = 取字节集右边 (temp, 取字节集长度 (temp) - 4)

' ' 输出调试文本 (取字节集长度 (temp))
' 返回 ()
' ' 测试完毕
.' 如果真 (取字节集左边 (temp, 4) = 到字节集 (“over”))  ' 如果发送完毕

    ' 加入成员 (完整数据, 取字节集右边 (temp, 取字节集长度 (temp) - 4))
    ' 输出调试文本 (取数组成员数 (完整数据))
    ' 数据排序 (完整数据)  ' 处理数据,进行排序校验
    ' 清除数组 (完整数据)  ' 清除数组,防止内存泄漏
    ' 返回 ()
.如果真结束

' 接受数据 (temp)
' temp = {  }


' ' temp = 服务器1.取回数据 ()  ' 取回数据,储存到临时变量
' ' ' 输出调试文本 (取字节集长度 (temp))
.' 如果真 (temp = 到字节集 (“over”))  ' 如果发送完毕
    ' ' 数据排序 (完整数据)  ' 处理数据,进行排序校验
    ' ' 清除数组 (完整数据)  ' 清除数组,防止内存泄漏
    ' ' 返回 ()
.如果真结束


' ' 长度 = 取字节集长度 (temp)  ' 得到数据长度
.' 如果真 (数据校验 (temp, 长度) = 假)  ' 效验数据是否正确
    ' ' ' ' 发送数据 (服务器1.取回客户 (), “错误”, 到文本 (取字节集中间 (temp, 33, 36)))  ' 如果错误,拒绝接受,返回序号.要求重发
    ' ' ' 输出调试文本 (“MD5校验出错!”)
    ' ' ' 返回 ()
.如果真结束
' ' 调试输出 (到文本 (取字节集中间 (temp, 33, 4)))
' ' 加入成员 (完整数据, 取字节集右边 (temp, 长度 - 32))  ' 如果没发送完毕.加入程序集变量等待下次数据


.子程序 _列表框1_列表项被选择

当前控制客户 = 列表框1.取项目文本 (列表框1.现行选中项)
.判断开始 (选择夹1.现行子夹 = 1)  ' 系统信息
    发送数据 (当前控制客户, “信息”, )
.默认

.判断结束


.子程序 _选择夹1_子夹被改变

.判断开始 (选择夹1.现行子夹 = 1)  ' 系统信息
    发送数据 (当前控制客户, “信息”, )
.默认

.判断结束


.子程序 _远程命令按钮1_被单击
.局部变量 命令, 文本型

命令 = 远程命令组合框1.内容
发送数据 (当前控制客户, “命令”, 命令)


.子程序 _远程命令组合框1_放开某键, 逻辑型
.参数 键代码, 整数型
.参数 功能键状态, 整数型

.如果真 (键代码 = #回车键)
    _远程命令按钮1_被单击 ()
.如果真结束


.子程序 _远程命令按钮2_被单击

.如果 (远程命令按钮2.标题 = “连接”)
    远程命令按钮2.标题 = “断开”
    发送数据 (当前控制客户, “命令”, “连接”)
.否则
    远程命令按钮2.标题 = “连接”
    发送数据 (当前控制客户, “命令”, “断开”)
.如果结束


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

发送数据 (当前控制客户, “文件”, “disk”)
' 文件管理_当前目录 = 文件管理_当前目录 + “c:\”

.子程序 _文件管理超级列表框1_被双击, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型

.如果真 (文件管理超级列表框1.现行选中项 < 0)
    返回 ()
.如果真结束

.如果真 (文件管理超级列表框1.取标题 (文件管理超级列表框1.现行选中项, ) = “后退” 且 文件管理超级列表框1.现行选中项 = 0)
    发送数据 (当前控制客户, “文件”, 文件管理_后退 (文件管理_当前目录))
    返回 ()
.如果真结束

文件管理_当前目录 = 文件管理_当前目录 + 文件管理超级列表框1.取标题 (文件管理超级列表框1.现行选中项, )
.如果真 (取文本右边 (文件管理_当前目录, 1) ≠ “\”)
    文件管理_当前目录 = 文件管理_当前目录 + “\”
.如果真结束
输出调试文本 (文件管理_当前目录)
发送数据 (当前控制客户, “文件”, 文件管理_当前目录)


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

发送数据 (当前控制客户, “进程”, “list”)


.子程序 _进程管理超级列表框1_右键单击表项

弹出菜单 (进程管理菜单, , )


.子程序 _刷新列表_被选择

发送数据 (当前控制客户, “进程”, “list|”)

.子程序 _结束进程_被选择

发送数据 (当前控制客户, “进程”, “kill|” + 进程管理超级列表框1.取标题 (进程管理超级列表框1.现行选中项, 1))


.子程序 _暂停进程_被选择

发送数据 (当前控制客户, “进程”, “stop|” + 进程管理超级列表框1.取标题 (进程管理超级列表框1.现行选中项, 1))

.子程序 _恢复进程_被选择

发送数据 (当前控制客户, “进程”, “stat|” + 进程管理超级列表框1.取标题 (进程管理超级列表框1.现行选中项, 1))

.子程序 _服务管理超级列表框1_右键单击表项

.判断开始 (服务管理超级列表框1.取标题 (服务管理超级列表框1.现行选中项, 4) = “正在运行”)

    服务菜单1.标题 = “停止服务”

.判断 (服务管理超级列表框1.取标题 (服务管理超级列表框1.现行选中项, 4) = “已停止”)
    服务菜单1.标题 = “运行服务”
.默认

.判断结束

弹出菜单 (服务管理菜单, , )


.子程序 _服务菜单1_被选择

.如果 (服务菜单1.标题 = “停止服务”)
    发送数据 (当前控制客户, “服务”, “exit” + 服务管理超级列表框1.取标题 (服务管理超级列表框1.现行选中项, ))
.否则
    发送数据 (当前控制客户, “服务”, “erun” + 服务管理超级列表框1.取标题 (服务管理超级列表框1.现行选中项, ))
.如果结束



.子程序 _暂停服务_被选择

发送数据 (当前控制客户, “服务”, “stop” + 服务管理超级列表框1.取标题 (服务管理超级列表框1.现行选中项, ))

.子程序 _继续服务_被选择

发送数据 (当前控制客户, “服务”, “reun” + 服务管理超级列表框1.取标题 (服务管理超级列表框1.现行选中项, ))


.子程序 _刷新列表_服务_被选择
.局部变量 temp, 文本型

.如果 (服务管理选择框.选中 = 真)
    temp = “list2”  ' 驱动级
.否则
    temp = “list1”  ' 服务级
.如果结束
发送数据 (当前控制客户, “服务”, temp)


.子程序 文件管理_后退, 文本型
.参数 参数, 文本型, 参考
.局部变量 temp, 文本型
.局部变量 位置_, 整数型

.如果真 (取文本右边 (参数, 1) = “\”)
    参数 = 取文本左边 (参数, 取文本长度 (参数) - 1)
.如果真结束

位置_ = 倒找文本 (参数, “\”, , 假)
参数 = 取文本左边 (参数, 位置_)
.如果真 (参数 ≠ “”)
    返回 (参数)
.如果真结束
返回 (“disk”)



.子程序 _文件管理_刷新列表_被选择

.如果真 (文件管理_当前目录 = “”)
    发送数据 (当前控制客户, “文件”, “disk”)
    返回 ()
.如果真结束

发送数据 (当前控制客户, “文件”, 文件管理_当前目录)


.子程序 _文件管理超级列表框1_右键单击表项

弹出菜单 (文件管理菜单1, , )


.子程序 _下载_被选择
.局部变量 文件名, 文本型

文件名 = 文件管理超级列表框1.取标题 (文件管理超级列表框1.现行选中项, )
.如果真 (取文本右边 (文件管理_当前目录, 1) ≠ “\”)
    文件管理_当前目录 = 文件管理_当前目录 + “\”
.如果真结束

文件名 = 文件管理_当前目录 + 文件名
发送数据 (当前控制客户, “下载”, “下载” + 文件名)


.子程序 _剪辑版按钮1_被单击

发送数据 (当前控制客户, “剪辑”, “取文本”)


.子程序 _剪辑版按钮2_被单击

发送数据 (当前控制客户, “剪辑”, “置文本” + 剪辑版编辑框2.内容)


.子程序 _重命名_被选择
.局部变量 文件名, 文本型
.局部变量 新文件名, 文本型

文件名 = 文件管理超级列表框1.取标题 (文件管理超级列表框1.现行选中项, )
.如果真 (取文本右边 (文件管理_当前目录, 1) ≠ “\”)
    文件管理_当前目录 = 文件管理_当前目录 + “\”
.如果真结束

文件名 = 文件管理_当前目录 + 文件名
输入框 (“请输入新的文件名”, “输入框”, 文件名, 新文件名, )
发送数据 (当前控制客户, “下载”, “重命” + 文件名 + “|” + 新文件名)


.子程序 _删除文件_被选择
.局部变量 文件名, 文本型

文件名 = 文件管理超级列表框1.取标题 (文件管理超级列表框1.现行选中项, )
.如果真 (取文本右边 (文件管理_当前目录, 1) ≠ “\”)
    文件管理_当前目录 = 文件管理_当前目录 + “\”
.如果真结束

文件名 = 文件管理_当前目录 + 文件名
发送数据 (当前控制客户, “下载”, “删除” + 文件名)













被控端:

.版本 2
.支持库 dp1

.程序集 功能处理
.程序集变量 取回命令, 文本型
.程序集变量 视频捕获临时文件, 文本型

.子程序 执行命令
.参数 参数, 字节集
.局部变量 命令, 文本型

命令 = 到文本 (参数)
.如果真 (命令 = “断开”)
    匿名管道是否连接 = 假
    .如果真 (控制台_断开连接 ())
        输出调试文本 (“断开匿名管道”)
    .如果真结束

    返回 ()
.如果真结束

.如果真 (匿名管道是否连接 = 真)
    控制台_发送命令 (命令)
    控制台_取回结果 (&取回命令回调函数)
    返回 ()
.如果真结束


.如果真 (命令 = “连接”)
    匿名管道是否连接 = 真
    控制台_连接 ()
    控制台_取回结果 (&取回命令回调函数)
    返回 ()
.如果真结束

发送数据 (“错误”, 到字节集 (“控制台_无法执行操作”), )
' 匿名管道

.子程序 系统信息
.局部变量 CPU频率, 整数型
.局部变量 CPU型号, 文本型
.局部变量 IE版本, 文本型
.局部变量 windows版本, 文本型
.局部变量 当前用户, 文本型
.局部变量 计算机名, 文本型
.局部变量 系统信息, 类_取系统信息
.局部变量 发送, 文本型
.局部变量 分辨率, 文本型
.局部变量 内存信息, 类_取内存信息
.局部变量 物理内存信息, 文本型
.局部变量 虚拟内存信息, 文本型

CPU频率 = 系统信息.取CPU频率 ()
CPU型号 = 系统信息.取CPU信息 ()
IE版本 = 系统信息.取IE版本 ()
windows版本 = 系统信息.取Windows版本 ()
当前用户 = 系统信息.取当前用户 ()
计算机名 = 系统信息.取计算机名 ()
分辨率 = 到文本 (取屏幕宽度 ()) + “*” + 到文本 (取屏幕高度 ())

物理内存信息 = 到文本 (到整数 (内存信息.取可用物理内存 () ÷ 1024 ÷ 1024)) + “MB/” + 到文本 (到整数 (内存信息.取物理内存容量 () ÷ 1024 ÷ 1024)) + “MB”

虚拟内存信息 = 到文本 (到整数 (内存信息.取可用虚拟内存 () ÷ 1024 ÷ 1024)) + “MB/” + 到文本 (到整数 (内存信息.取虚拟内存容量 () ÷ 1024 ÷ 1024)) + “MB”
发送 = CPU型号 + “|” + 到文本 (CPU频率) + “|” + 物理内存信息 + “|” + 虚拟内存信息 + “|” + windows版本 + “|” + IE版本 + “|” + 当前用户 + “|” + 计算机名 + “|” + 分辨率
发送数据 (“信息”, 到字节集 (发送))
' 取系统信息

.子程序 屏幕截图
.参数 参数, 字节集
.局部变量 temp, 文本型
.局部变量 临时数据, 字节集
.局部变量 是否持续, 逻辑型

.如果真 (到文本 (参数) = “”)
    屏幕截图发送 ()
    返回 ()
.如果真结束

.如果真 (到文本 (参数) = “ok”)
    屏幕截图发送 ()
    返回 ()
.如果真结束

' 屏幕截图


.子程序 屏幕截图发送


发送数据 (“截图”, 压缩数据 (快照 (, , )), )


.子程序 文件管理
.参数 参数, 字节集
.局部变量 命令, 文本型
.局部变量 文件名, 文本型
.局部变量 列表, 文本型

命令 = 到文本 (参数)
.如果真 (命令 = “disk”)
    发送数据 (“文件disk|”, 到字节集 (取所有盘符 ()), )
    返回 ()
.如果真结束


.如果真 (取文本右边 (命令, 1) ≠ “\”)
    命令 = 命令 + “\”
.如果真结束

文件名 = 寻找文件 (命令 + “*.*”, #子目录)
.判断循环首 (文件名 ≠ “”)
    列表 = 列表 + 文件名 + “\|”
    文件名 = 寻找文件 (, #子目录)
.判断循环尾 ()

文件名 = 寻找文件 (命令 + “\*.*”, )
.判断循环首 (文件名 ≠ “”)
    列表 = 列表 + 文件名 + “|”
    文件名 = 寻找文件 (, )
.判断循环尾 ()

发送数据 (“文件”, 到字节集 (列表), )

.子程序 取回命令回调函数
.参数 指针, 整数型

取回命令 = 取回命令 + 指针到文本 (指针)

.如果真 (取文本右边 (取回命令, 1) = “>”)
    发送数据 (“命令”, 到字节集 (取回命令), )
    取回命令 = “”
.如果真结束


.子程序 进程管理
.参数 参数, 字节集
.局部变量 命令, 文本型, , "0"
.局部变量 进程列表, 进程列表, , "0"
.局部变量 i, 整数型
.局部变量 temp, 文本型

命令 = 分割文本 (到文本 (参数), “|”, )
.判断开始 (命令 [1] = “list”)
    .如果真 (进程_取进程列表 (进程列表) = 假)
        发送数据 (“错误”, 到字节集 (“进程_取进程列表失败!”))
        返回 ()
    .如果真结束
    .计次循环首 (取数组成员数 (进程列表), i)
        temp = temp + 进程列表 [i].名称 + “,” + 到文本 (进程列表 [i].PID) + “,” + 进程列表 [i].路径 + “|”
    .计次循环尾 ()
    发送数据 (“进程”, 到字节集 (temp), )


.判断 (命令 [1] = “stop”)
    进程_挂起进程 (到整数 (命令 [2]))
.判断 (命令 [1] = “stat”)
    进程_恢复进程 (到整数 (命令 [2]))
.判断 (命令 [1] = “kill”)

.默认

.判断结束



.子程序 服务管理
.参数 参数, 字节集
.局部变量 命令, 文本型
.局部变量 服务列表, 服务信息, , "0"
.局部变量 是否驱动, 逻辑型
.局部变量 i, 整数型
.局部变量 数据, 文本型

命令 = 到文本 (参数)
.如果 (取文本右边 (命令, 1) = 到文本 (1))
    是否驱动 = 真
.否则
    是否驱动 = 假
.如果结束


.判断开始 (取文本左边 (命令, 4) = “list”)
    E_取服务列表 (是否驱动, 服务列表)
    输出调试文本 (是否驱动)
    .计次循环首 (取数组成员数 (服务列表), i)
        数据 = 数据 + 服务列表 [i].服务名称 + “,”
        数据 = 数据 + 服务列表 [i].显示名称 + “,”
        数据 = 数据 + 服务列表 [i].服务描述 + “,”
        数据 = 数据 + 服务列表 [i].服务类型 + “,”
        数据 = 数据 + 服务列表 [i].服务状态 + “,”
        数据 = 数据 + 服务列表 [i].启动方式 + “,”
        数据 = 数据 + 服务列表 [i].登陆方式 + “,”
        数据 = 数据 + 服务列表 [i].进程PID + “|”
    .计次循环尾 ()
    发送数据 (“服务”, 到字节集 (数据), )
    数据 = “”
    清除数组 (服务列表)
    返回 ()
.判断 (取文本左边 (命令, 4) = “exit”)

    E_停止服务 (取文本右边 (命令, 取文本长度 (命令) - 4))
    返回 ()
.判断 (取文本左边 (命令, 4) = “stop”)
    E_暂停服务 (取文本右边 (命令, 取文本长度 (命令) - 4))
    返回 ()
.判断 (取文本左边 (命令, 4) = “reun”)
    E_继续服务 (取文本右边 (命令, 取文本长度 (命令) - 4))
    返回 ()
.判断 (取文本左边 (命令, 4) = “erun”)
    E_运行服务 (取文本右边 (命令, 取文本长度 (命令) - 4))
.默认

.判断结束


.子程序 视频捕获
.参数 参数, 字节集
.局部变量 命令, 文本型

命令 = 到文本 (参数)
.如果真 (命令 = “stat”)
    创建视频窗口 (窗口1.分组框1.取窗口句柄 (), 300, 300)
    处理事件 ()
    开始捕获 (600)
    .计次循环首 (500, )
        处理事件 ()
    .计次循环尾 ()

    视频捕获临时文件 = 取临时文件名 ()
    视频捕获发送 ()
    返回 ()
.如果真结束
.如果真 (命令 = “ok”)
    视频捕获发送 ()
    返回 ()
.如果真结束
.如果真 (命令 = “exit”)
    停止捕获 ()
    返回 ()
.如果真结束


.子程序 视频捕获发送
.局部变量 temp, 字节集

.如果真 (视频抓图 (视频捕获临时文件) ≠ 0)
    处理事件 ()
    temp = 读入文件 (视频捕获临时文件)
    发送数据 (“视频”, 压缩数据 (temp), )
    temp = {  }
.如果真结束


.子程序 文件下载
.参数 参数, 字节集
.局部变量 文件路径, 文本型
.局部变量 命令, 文本型
.局部变量 文本数组, 文本型, , "0"

命令 = 到文本 (取字节集左边 (参数, 4))
文件路径 = 到文本 (取字节集右边 (参数, 取字节集长度 (参数) - 4))
.判断开始 (命令 = “下载”)
    发送数据 (“下载”, 压缩数据 (读入文件 (文件路径)), )
.判断 (命令 = “重命”)
    文本数组 = 分割文本 (文件路径, “|”, )
    .如果真 (取数组成员数 (文本数组) ≥ 2)
        文件更名 (文本数组 [1], 文本数组 [2])
    .如果真结束

.判断 (命令 = “删除”)
    删除文件 (文件路径)
.默认

.判断结束


.子程序 剪辑版操作
.参数 参数, 字节集
.局部变量 命令头, 文本型

命令头 = 到文本 (取字节集左边 (参数, 6))
.判断开始 (命令头 = “取文本”)
    发送数据 (“剪辑”, 到字节集 (“文本” + 取剪辑板文本 ()), )
.判断 (命令头 = “置文本”)
    置剪辑板文本 (到文本 (取字节集右边 (参数, 取字节集长度 (参数) - 10)))
.默认

.判断结束



网友(2):

你该去【易语言吧】

网友(3):

用服务器和客户就可以