[教程]PECMD全网首发-网速获取
2024-8-7 7249

前言:

最近由于我要感谢我的好友白云间大佬对社区不限速下载功能的巨大帮助(由于我搞不定)。而且她又正好在做他的PE(Pure PE(纯真 PE))

它使用的是社区大佬的PECMD蜂鸟PE制作器,但是在他修改时遇到了一些问题

我就打算为他制作一款PECMD的PE制作器。也顺便补充一下我最近太久没发帖子这个问题问题

我便开始制作起了PE制作群,我打算制作出一款跨世纪的PE制作器,为其中添加了多项首发技术:

首发PECMD16进制色彩Bug解决及产生原理、

首发PECMD免fbwf.cfg实现电脑存储单位的实际及理论的换算、

首发PECMD网速获取(无需第三方程序只需要PECMD即可)、

领先的PE在线制作、领先的PE在线升级、

领先的下载文件高精度下载进度条......

我决心以这次的PE制作器颠覆大家对PECMD的认知!

 

解析&讲解:

第一步 如何获取网速?

目前我尝试过的方案如下:

1.使用纯PECMD实现

原理:下载一个文件(在PEiso文件同的一个服务器下的一个小一些的文件)下载完成后,文件大小/时间(秒),获得下载速度

缺点:用了网速变慢,更新不及时

 

2.使用第三方工具(speedtest)实现

原理:通过PECMD的EXEC命令调用CMD再由CMD调用Speedtest后,通过CMD控制台输出信息,PECMD获取控制台信息截取需要的部分

缺点:工具不支持Win10以下的系统

image.webp

 

3.使用CMD的Ping命令

原理:访问一个网站或IP通过访问加载时间来了解网络速度,时间越长速度越慢

缺点:不能知道详细信息

 

4.使用CMD的

wmic nic where netEnabled=true get name, speed

命令

原理:通过网络设备获取网络速度,只有Windows 10以上才能用

缺点:速度不精准,只有网络速度,不分上传下载。

image.webp

 

5.使用CMD调用VBS获取网络速度

原理:使用CMD调用VBS获取网速后用PECMD获取数据

缺点:会出现间断的问题,有时获取不到,每隔一个就有一个没有数据

 

在我不断地寻找后终于找到了下面这个方法,可以完美解决问题:

(请留下你的评论在获取哦📝📝📝)

此处内容隐藏,回复后可见!立即回复  回复后请刷新页面!刷新

 

第二步  如何实现获取网速的效果?

首先使用EXEC命令调用CMD并把CMD控制台内容保存到变量

代码:

此处内容隐藏,回复后可见!立即回复  回复后请刷新页面!刷新

解释:

“200”为时间单位,此处单位为毫秒。这个说明等待多久后查看CMD控制台信息

“网速”为存储控制台所有内容的变量

“netstat -e -s”是CMD命令

 

接着使用MSTR命令实现截取部分内容

此处内容隐藏,回复后可见!立即回复  回复后请刷新页面!刷新

解释:

“网络下载速度-字节”和“网络上传速度-字节”为保存截取后信息的变量

“%网速%”表示控制台原内容

“68”和“98”表示起始位置,为了保证速度特别快时数据不会缺失所以空格也截取进去了

“30”和“8”表示截取的字符数量

 

然后使用SED命令去除多余空格

此处内容隐藏,回复后可见!立即回复  回复后请刷新页面!刷新

解释:

“网络下载速度-字节”和“网络上传速度-字节”表示保存处理后数据的变量

“0”表示遍历所有内容

“[]”中的“ ”表示替换的对象

“,,”中间没有字符表示把原始内容的所有“ ”替换成“”

“%网络下载速度-字节%”和“%网络上传速度-字节&”原始数据

 

这样功能就实现了,下面是我写的完整功能。里面还有我首发的无fbwf.cfg实现存储单位换算。

运行效果图:

image.webp

代码:

此处内容隐藏,回复后可见!立即回复  回复后请刷新页面!刷新

 

最后百般通团队也衷心的祝愿大家:身体健康、工作顺利、家庭美满!!!

最后于 2024-8-12 被百般通PE编辑 ,原因:
奖励
收藏
点赞
分享
百般花样,样样精通
最新回复 (26)
  • avatar image

    谢谢分享

    : )
  • avatar image
    alovelydoge 2024-8-7

    谢谢大佬!

    大佬牛B!

    一只可爱的doge
  • avatar image
    TufRTX6070Ti 2024-8-7

    太帅了!

  • avatar image
    爱心会员VIP会员

    百般通牛逼!支持一下

    https://www.123pan.com/s/NflRVv-Cm5Sh
  • avatar image
    爱心会员VIP会员

    来个纯PECMD调取API获取网速:

     

    //https://download.csdn.net/download/fx524913413/7774949
    IFEX  %&CurFile%.LOG, LOGS --2 * %&CurFile%.LOG
    ENVI$ &NL=0d 0a
    ENVI^ EnviMode=1
    ENVI^ ForceLOcal=1
    WIN1
    _SUB WIN1,W387H254,网络速度,
        LABE &wMsg,L63T78W264H100,,,
        CALL $--ret:&&hDll  ,-LoadLibrary,^Iphlpapi.dll
        CALL $--ret:&&GetIfTable  ,-GetProcAddress,*%hDll%,GetIfTable
        --MESS. [%&hDll%]  [%&GetIfTable%]
    
        SET    &sz0=0x100000
        SET$$ &sz=0x00100000 0 0
        SET#$ &Buf=*0x100100 0  
    
        SET &dwLastIn=0    //上一秒钟的接收字节数
        SET &dwLastOut=0   //上一秒钟的发送字节数
        SET &dwBandIn=0    //下载速度
        SET &dwBandOut=0   //上传速度
        SET &MAX_INTERFACE_NAME_LEN=256
        SET &MAXLEN_PHYSADDR=8
        SET &MAXLEN_IFDESCR=256
        CALC #&&MIBLEN=%&MAX_INTERFACE_NAME_LEN% * 2 + 4*5 + %&MAXLEN_PHYSADDR% + 4*16 + %&MAXLEN_IFDESCR%
        CALC #&&Ofb1=4 + %&MAX_INTERFACE_NAME_LEN% * 2 + 4*5 + %&MAXLEN_PHYSADDR%  + 4*3
        //CALC #&&Ofb2=%&Ofb1% + 4*6
        SET &dwInOctets=0
        SET &dwOutOctets=0
        TIME  T1,1000, CALL OnT1 
    
    _END
    
    _SUB OnT1
        SET-long sz=%&sz0%
        SET-int64 Buf=0
        ^CALL $--ncd --nrcd --qd --ret:&&ret #,%&GetIfTable%,*&Buf,*&sz,#1
        SET &dwNumEntries=%&Buf?long:0%
        SET &I=0
        SET &Of1=%Ofb1%
        LOOP #%&I%<%&dwNumEntries%,
        {*  CALC #&I=%&I% + 1
            ENVI?long &Buf=&&dwInOctetsI:%&Of1%  //DWORD
            ENVI?long &Buf=&&dwOutOctetsI:(%&Of1%+24)
            //^CALC #&&dwInOctetsI=%%Buf?long:%&Of1%%%  //DWORD
            //^CALC #&&dwOutOctetsI=%%&Buf?long:(%&Of1%+24)%%  //DWORD
            CALC #&dwInOctets=%&dwInOctets% + %&dwInOctetsI%  //dwInOctets
            CALC #&dwOutOctets=%&dwOutOctets% + %&dwOutOctetsI%  //dwOutOctets
            CALC #&Of1=%&Of1% + %&MIBLEN%
        }
        CALC &dwBandIn=(%&dwInOctets% - %&dwLastIn% ) / 1024#2     //下载速度
        CALC &dwBandOut=(%&dwOutOctets% - %&dwLastOut%) / 1024#2   //上传速速
        SET dwLastIn=%&dwInOctets%
        SET dwLastOut=%&dwOutOctets%
        ENVI  @&wMsg=收到字节: %&dwLastIn% bytes%&NL%发送字节: %&dwLastOut% bytes%&NL%下行速度: %&dwBandIn% KB%&NL%上行速度: %&dwBandOut% KB
    _END
    
    EXIT
    

     

     

    最后于 2024-8-8 被527104427编辑 ,原因:
    https://www.123pan.com/s/NflRVv-Cm5Sh
  • avatar image
    百般通PE 2024-8-8
    楼主   7
    527104427 来个纯PECMD调取API获取网速: &nbsp; //https://download.csdn.net/download/fx524913413/7774949 IFEX %&am ...

    就是代码长了点,不过还是非常歪瑞古德!!!

    百般花样,样样精通
  • avatar image
    yzdsb 2024-8-8

    谢谢分享

    亲爱的您
  • avatar image
    百般通001 2024-8-8
  • avatar image
    百般通001 2024-8-8
  • avatar image
    百般通001 2024-8-8
  • avatar image
    百般通001 2024-8-8
  • avatar image
    百般通001 2024-8-8
  • avatar image
    百般通001 2024-8-8
  • avatar image
    百般通001 2024-8-8
  • avatar image
    百般通001 2024-8-8
  • avatar image
    jonyzhr 2024-8-8

    谢谢分享

    WINST
  • avatar image
    kedion 2024-8-8

    这个前言怎么读都感觉不通顺

    kedion
  • avatar image

    感谢分享

    无事 无非 不争 不斗 不管
  • avatar image
    USER555 2024-8-8

    感谢分享

  • avatar image
    白云间 2024-8-8

    大佬威武👍

  • avatar image
    Archimage 2024-8-9

    我看看怎么个事...........😁

    https://pan.xunlei.com/s/VNAY3RpICYzlFiiC2c5wyznqA1?pwd=6bh8#
  • avatar image
    百般通PE 2024-8-12
    楼主   23
    kedion 这个前言怎么读都感觉不通顺

    我改改

    百般花样,样样精通
  • avatar image
    dalizxr 2024-8-28

    谢谢大佬,学习了!

  • avatar image
    夕昕 2024-8-29

    感谢大佬分享

    感谢PECMD
返回