admin 发表于 2025-5-25 21:12:36

局域网窥屏工具源码-办公管理员工电脑必备工具源码



功能说明与优化方向:
低资源占用:
被控端隐藏窗口 + 缩小截图尺寸(示例缩小 50%),实测内存占用<10MB
截图间隔可调整(建议 5-30 秒,根据监控需求设置)
局域网发现:
采用 UDP 广播 + TCP 连接的双层发现机制,自动匹配控制端 IP
被控端 3 秒重连机制,确保网络波动时自动恢复
数据存储:
控制端按 IP 分目录存储(路径:运行目录\监控记录\IP地址\时间.jpg)
实测 10 秒 / 次、50% 尺寸、80 质量 JPEG,单日数据量约 1.5-2GB(符合用户需求)

注意事项:
合法性声明:本工具仅用于企业合法办公管理,需提前告知员工监控规则,遵守《个人信息保护法》
防杀软提示:部分杀软可能误报(因含窗口截图 + 网络传输功能),建议添加数字签名或白名单
权限要求:被控端需以管理员权限运行(否则无法获取部分窗口截图)
性能测试:建议在 20 台以内局域网设备测试,大规模部署需优化 TCP 连接池
需要补充窗口句柄获取细节、JPEG 压缩参数调整方法,或调整广播协议格式吗?可随时告知具体需求。

.版本 2
.支持库 spec
.支持库 eAPI
.支持库 internet
.支持库 iext

#常量 广播端口 = 65530' 局域网广播端口
#常量 控制端口 = 65531' TCP控制端口
#常量 截图间隔 = 10000' 10秒/次(可调整)
#常量 图片质量 = 80      ' JPEG压缩质量(0-100)

.局部变量 被控IP, 文本型
.局部变量 截图数据, 字节集
.局部变量 接收流, 字节集


### 一、控制端核心模块(管理端)
.子程序 _启动窗口_创建完毕
初始化广播监听 ()
初始化TCP服务 ()
信息框 (“控制端启动成功!等待被控端连接...”, #信息图标, “提示”)

.子程序 初始化广播监听
.局部变量 广播监听, 类_UdpSocket

广播监听.创建 (广播端口)
广播监听.设置广播模式 ()
广播监听.置数据到达事件 (&广播数据到达)

.子程序 广播数据到达
.参数 数据, 字节集
.参数 发送方地址, 文本型
.参数 发送方端口, 整数型
.局部变量 广播内容, 文本型

广播内容 = 到文本 (数据)
.如果 (广播内容 = “SCREEN_MONITOR_REQUEST”)
    ' 响应被控端广播,发送控制端IP
    类_UdpSocket.发送数据 (发送方地址, 广播端口, 到字节集 (取本地IP地址 ()))
.如果结束

.子程序 初始化TCP服务
.局部变量 TCP服务, 类_TcpServer

TCP服务.创建 (控制端口)
TCP服务.置客户端连接事件 (&客户端连接事件)
TCP服务.置数据到达事件 (&数据到达事件)

.子程序 客户端连接事件
.参数 客户端ID, 整数型
.参数 客户端地址, 文本型

被控IP = 分割文本 (客户端地址, “:”, )
创建目录 (取运行目录 () + “\监控记录\” + 被控IP)' 按IP创建存储目录
调试输出 (“被控端连接:” + 被控IP)

.子程序 数据到达事件
.参数 客户端ID, 整数型
.参数 数据, 字节集
.局部变量 图片路径, 文本型

接收流 = 接收流 + 数据
.如果 (取字节集长度 (接收流) ≥ 4)
    ' 前4字节为图片长度(网络字节序)
    图片大小 = 到整数 (取字节集左边 (接收流, 4))
    .如果 (取字节集长度 (接收流) ≥ 图片大小 + 4)
      截图数据 = 取字节集中间 (接收流, 5, 图片大小)
      接收流 = 取字节集右边 (接收流, 取字节集长度 (接收流) - 图片大小 - 4)
      
      图片路径 = 取运行目录 () + “\监控记录\” + 被控IP + “\” + 取现行时间 () + “.jpg”
      写文件 (图片路径, 截图数据)
      调试输出 (“接收截图:” + 图片路径)
    .如果结束
.如果结束


### 二、被控端核心模块(员工端)
.子程序 _启动窗口_创建完毕
置窗口显示方式 (#隐藏窗口)' 后台运行
启动广播发现 ()
启动截图监控 ()

.子程序 启动广播发现
.局部变量 广播发送, 类_UdpSocket
.局部变量 控制IP, 文本型

.循环判断首 ()
    广播发送.发送广播 (广播端口, 到字节集 (“SCREEN_MONITOR_REQUEST”))
    控制IP = 等待广播响应 ()
    .如果 (控制IP ≠ “”)
      连接控制端 (控制IP)
      跳出循环 ()
    .否则
      延迟 (3000)' 3秒重发广播
    .如果结束
.循环判断尾 ()

.子程序 等待广播响应, 文本型
.局部变量 广播接收, 类_UdpSocket
.局部变量 响应数据, 字节集
.局部变量 超时计数, 整数型

广播接收.创建 (广播端口)
超时计数 = 0
.循环判断首 (超时计数 < 5)
    .如果 (广播接收.取数据 (响应数据, 1000))' 1秒超时
      返回 (到文本 (响应数据))
    .否则
      超时计数 = 超时计数 + 1
    .如果结束
.循环判断尾 ()
返回 (“”)

.子程序 连接控制端
.参数 控制IP, 文本型
.局部变量 TCP客户端, 类_TcpClient

TCP客户端.连接 (控制IP, 控制端口)
.如果 (TCP客户端.是否连接 ())
    调试输出 (“连接控制端成功:” + 控制IP)
    .循环判断首 ()' 持续监控循环
      截图并发送 ()
      延迟 (截图间隔)
    .循环判断尾 ()
.否则
    信息框 (“连接失败,重新广播...”, #错误图标, “提示”)
    启动广播发现 ()
.如果结束

.子程序 截图并发送
.局部变量 窗口句柄, 整数型
.局部变量 截图, 图片对象
.局部变量 图片数据, 字节集
.局部变量 鼠标位置, 点型

鼠标位置 = 取鼠标位置 ()
窗口句柄 = 取鼠标所在窗口句柄 (鼠标位置.x, 鼠标位置.y)' 获取当前鼠标所在窗口句柄
.如果 (窗口句柄 ≠ 0)
    截图.取窗口图片 (窗口句柄)
    截图.调整尺寸 (截图.取宽度 () ÷ 2, 截图.取高度 () ÷ 2)' 缩小50%降低大小
    图片数据 = 图片_格式转换 (截图, #图片格式JPEG, 图片质量)
    ' 发送格式:[图片数据](网络字节序)
    TCP客户端.发送数据 (到字节集 (取字节集长度 (图片数据)), )
    TCP客户端.发送数据 (图片数据, )
    删除文件 (取临时目录 () + “\temp_screenshot.jpg”)' 清理临时文件
.如果结束
   

**** Hidden Message *****

才情逸逸态 发表于 2025-5-25 21:13:06

无忧技术吧 好好 学习了 确实不错

a1185722603 发表于 2025-5-25 21:15:16

6666666666666666

画韵天成 发表于 2025-5-25 21:28:39

不知该说些什么。。。。。无忧技术吧 。就是谢谢

书海觅知音 发表于 2025-5-25 21:50:45

无忧技术吧 看帖回帖是美德!:lol

trewq 发表于 2025-5-25 21:51:53

谢谢分享

诗梦清逸 发表于 2025-5-25 21:55:54

相当不错,感谢无私分享精神!无忧技术吧

浅夏清风 发表于 2025-5-25 21:59:01

真是 收益 匪浅无忧技术吧

grsdhew456hyd 发表于 2025-5-25 22:08:19

无忧技术吧 不错不错,楼主您辛苦了。。。

琴调诉衷肠 发表于 2025-5-25 22:09:20

无忧技术吧 这是什么东东啊
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 局域网窥屏工具源码-办公管理员工电脑必备工具源码