本帖最后由 憨憨问号 于 2025-5-23 00:50 编辑
妹妹到了玩电脑的年纪了,一开始想给妹妹做个定时锁定的程序,后来越做越大了,利用数据报收发指令做了局域网内远程控制,能远程设定时间,增减时间,奖惩机制,弹窗,远程截图查看屏幕等等功能
开发途中遇到了一些问题
因为这个程序的开发时间跨度比较大,六岁那年做了简易远程操控版,今年七岁了,两台电脑要分别搬到两个屋子里,没办法再外面看着妹妹具体在干什么,于是才有了完善程序的想法
然而和去年相比,我发现我的电脑和妹妹的电脑局域网IP居然全都变了,以往利用数据报固定两个IP进行数据传递的方法失效了
于是开始研究如何能直接获取到局域网内所有的IP地址,这样实时获取就能避免前面提到的问题了
我在论坛里翻到了早期大神编写的程序,其中有一条获取局域网内所有计算机名&对应IP的命令,但其对接了各种标签编辑框,还用了零零散散的变量,可读性有些差
我对其进行了重新优化,提高了可读性,同时基于此命令额外做了“cha询指定计算机名局域网IP地址”,提供给有需要的人
授人以鱼不如授人以渔,除非代码量过大,否则我始终坚持直接发布代码,代码中每一条都编写详细注释,方便易友理解 希望您能留下一个宝贵的好评和点赞 .版本 2 [/color ][/align ][color= #000000] .支持库 WNet |
问号_取局域网内所有ip和计算机名 | | | |
回调 | 局域网IP计算机名 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 局域网操作 | 局域网操作 | | | 所有主机名 | 文本型 | | 0 | 计次 | 整数型 | | | 临时回调 | 局域网IP计算机名 | | |
局域网操作. 取所有主机名 (所有主机名 ) 计次循环首 (取数组成员数 (所有主机名 ), 计次 )  临时回调.计算机名 = 子文本替换 (所有主机名 [计次 ], “\\”, “”, , , 真)  临时回调.局域网IP = 转换为IP地址 (临时回调.计算机名 ) 加入成员 (回调, 临时回调 ) 计次循环尾 ()|
问号_cha询指定计算机名局域网IP地址 | 文本型 | | |
计算机名 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 局域网操作 | 局域网操作 | | | 临时回调 | 局域网IP计算机名 | | | 所有主机名 | 文本型 | | 0 | 计次 | 整数型 | | |
局域网操作. 取所有主机名 (所有主机名 ) 计次循环首 (取数组成员数 (所有主机名 ), 计次 )  临时回调.计算机名 = 子文本替换 (所有主机名 [计次 ], “\\”, “”, , , 真)  临时回调.局域网IP = 转换为IP地址 (临时回调.计算机名 )  如果真 (计算机名 = 临时回调.计算机名 )  返回 (临时回调.局域网IP )
计次循环尾 ()返回 (“未找到指定计算机名,请检查提供的局域网IP计算机名数组是否含有这个计算机名”) |
局域网IP计算机名 | | |
计算机名 | 文本型 | | | 局域网IP | 文本型 | | |
.支持库 WNet
.子程序 问号_取局域网内所有ip和计算机名
.参数 回调, 局域网IP计算机名, 参考 数组, 用“局域网IP计算机名”类型的数组型变量接收数据
.局部变量 局域网操作, 局域网操作
.局部变量 所有主机名, 文本型, , "0"
.局部变量 计次, 整数型
.局部变量 临时回调, 局域网IP计算机名
局域网操作.取所有主机名 (所有主机名) ' 取出所有主机名并存放在数组变量中
.计次循环首 (取数组成员数 (所有主机名), 计次) ' 根据数组变量的成员数来决定循环次数
临时回调.计算机名 = 子文本替换 (所有主机名 [计次], “\\”, “”, , , 真) ' 将主机名文本进行处理后,存入自定义数据类型变量
临时回调.局域网IP = 转换为IP地址 (临时回调.计算机名) ' 将主机名转为IP,存入自定义数据类型变量
' 调试输出 (临时回调.计算机名, 临时回调.局域网IP) ' 调试时更方便的查看回显
加入成员 (回调, 临时回调) ' 将数据加入回调变量中
.计次循环尾 ()
.子程序 问号_cha询指定计算机名局域网IP地址, 文本型, , 在提供的局域网中进行搜索,返回对应计算机名的IP地址,若失败则返回失败原因
.参数 计算机名, 文本型, , 提供一个计算机名,例如“PC-20201919SBSB”
.局部变量 局域网操作, 局域网操作
.局部变量 临时回调, 局域网IP计算机名
.局部变量 所有主机名, 文本型, , "0"
.局部变量 计次, 整数型
局域网操作.取所有主机名 (所有主机名) ' 取出所有主机名并存放在数组变量中
.计次循环首 (取数组成员数 (所有主机名), 计次) ' 根据数组变量的成员数来决定循环次数
临时回调.计算机名 = 子文本替换 (所有主机名 [计次], “\\”, “”, , , 真) ' 将主机名文本进行处理后,存入自定义数据类型变量
临时回调.局域网IP = 转换为IP地址 (临时回调.计算机名) ' 将主机名转为IP,存入自定义数据类型变量
.如果真 (计算机名 = 临时回调.计算机名) ' 如果本次循环时,临时回调.计算机名和命令提供的计算机名相同,说明这就是用户要查找的计算机名
返回 (临时回调.局域网IP) ' 返回其IP
.如果真结束
' 如果不同,说明这次循环的临时回调并不是用户要找的,继续进行循环
.计次循环尾 ()
返回 (“未找到指定计算机名,请检查提供的局域网IP计算机名数组是否含有这个计算机名”) ' 如果循环结束仍然没有找到,说明局域网内不存在用户提供的计算机名
.版本 2
.数据类型 局域网IP计算机名
.成员 计算机名, 文本型
.成员 局域网IP, 文本型
调用例子: 变量名 | 类 型 | 静态 | 数组 | 备 注 | 回调数据 | 局域网IP计算机名 | | 0 | 问号_取局域网内所有ip和计算机名 (回调数据 )调试输出 (回调数据 [1 ].计算机名, 回调数据 [1 ].局域网IP )调试输出 (问号_cha询指定计算机名局域网IP地址 (“PC-20231119IDAA”)) |