易语言仿360悬浮窗实现流量监控和内存优化的代码

 更新时间:2018年11月30日 11:53:51   作者:易语言源码教程  
今天小编就为大家分享一篇关于易语言仿360悬浮窗实现流量监控和内存优化的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

DLL命令表

.版本 2
.DLL命令 GlobalMemoryStatus, 整数型, "kernel32", "GlobalMemoryStatus"
  .参数 lpBuffer, MEMORYSTATUS
.DLL命令 OpenProcess, 整数型, "Kernel32.dll", "OpenProcess"
  .参数 dwDesiredAccess, 整数型
  .参数 bInheritHandle, 整数型
  .参数 dwProcessId, 整数型
.DLL命令 SetProcessWorkingSetSize, 整数型, "kernel32.dll", "SetProcessWorkingSetSize"
  .参数 HANDLE
  .参数 SIZE_T
  .参数 SIZE_T
.DLL命令 CloseHandle, 整数型, "kernel32.dll", "CloseHandle"
  .参数 HANDLE, 整数型
.DLL命令 CreateToolhelp32Snapshot, 整数型, "Kernel32.dll", "CreateToolhelp32Snapshot"
  .参数 dwFlags, 整数型
  .参数 th32ProcessID, 整数型
.DLL命令 Process32First, 整数型, "Kernel32.dll", "Process32First"
  .参数 HANDLE, 整数型
  .参数 LPPROCESSENTRY32, PROCESSENTRY32
.DLL命令 Process32Next, 整数型, "Kernel32.dll", "Process32Next"
  .参数 HANDLE, 整数型
  .参数 LPPROCESSENTRY32, PROCESSENTRY32
.DLL命令 GetIfTable, 整数型, "iphlpapi", "GetIfTable"
  .参数 信息表, 字节集, 传址
  .参数 信息表尺寸, 整数型, 传址
  .参数 内参数, 整数型

全局变量表

.版本 2
.全局变量 当前内存位置, MEMORYSTATUS
.全局变量 原接收总计, 整数型
.全局变量 原发送总计, 整数型
.全局变量 单位, 文本型
.全局变量 已取得编号, 整数型

自定义数据类型表

.版本 2
.数据类型 MEMORYSTATUS
  .成员 结构长度, 整数型
  .成员 实际存储器百分比, 整数型
  .成员 总物理内存, 整数型
  .成员 可用内存, 整数型
  .成员 总页文件, 整数型
  .成员 可用页文件, 整数型
  .成员 总虚拟内存, 整数型
  .成员 可用虚拟内存, 整数型
.数据类型 PROCESSENTRY32
  .成员 dwSize, 整数型
  .成员 cntUsage, 整数型
  .成员 th32ProcessID, 整数型
  .成员 th32DefaultHeapID, 整数型
  .成员 th32ModuleID, 整数型
  .成员 cntThreads, 整数型
  .成员 th32ParentProcessID, 整数型
  .成员 pcPriClassBase, 整数型
  .成员 dwFlags, 整数型
  .成员 szExeFile, 字节型, , "256"
.数据类型 MIB_IFROW
  .成员 dwInOctets, 整数型, , , 总共收到(字节)
  .成员 dwOutOctets, 整数型, , , 总共发送(字节)

Memory

.版本 2
.程序集 Memory
.子程序 Obtain_memory, MEMORYSTATUS
.局部变量 reg_Memory, MEMORYSTATUS
reg_Memory.结构长度 = 32
GlobalMemoryStatus (reg_Memory)
返回 (reg_Memory)
.子程序 Optimize_memory, 整数型
.参数 pid, 整数型
.局部变量 hProcess, 整数型
hProcess = OpenProcess (2035711, 0, pid)
.如果真 (SetProcessWorkingSetSize (hProcess, -1, -1) = 1)
  CloseHandle (hProcess)
  返回 (1)
.如果真结束
CloseHandle (hProcess)
返回 (0)
.子程序 Optimize_memory_all
.局部变量 hSnapShot, 整数型
.局部变量 prHandle, 整数型
.局部变量 pe32, PROCESSENTRY32
hSnapShot = CreateToolhelp32Snapshot (15, 0)
.如果真 (hSnapShot = 0)
.如果真结束
pe32.dwSize = 1024
prHandle = Process32First (hSnapShot, pe32)
.判断循环首 (prHandle ≠ 0)
  Optimize_memory (pe32.th32ProcessID)
  prHandle = Process32Next (hSnapShot, pe32)
.判断循环尾 ()
CloseHandle (hSnapShot)

Traffic

.版本 2
.程序集 Traffic
.子程序 Flow_downstream, 文本型, , 返回下载速度
.局部变量 temp, MIB_IFROW, , "0"
.局部变量 编号, 整数型
.局部变量 返回值, 文本型
编号 = Flow (temp)
.如果真 (原接收总计 = 0)
  原接收总计 = temp [编号].dwInOctets
.如果真结束
返回值 = 数值到格式文本 ((temp [编号].dwInOctets - 原接收总计) ÷ 1024, 1, 假)
原接收总计 = temp [编号].dwInOctets
返回 (返回值)
.子程序 Flow_upstream, 文本型, , 返回上传速度
.局部变量 temp, MIB_IFROW, , "0"
.局部变量 编号, 整数型
.局部变量 返回值, 文本型
编号 = Flow (temp)
.如果真 (原发送总计 = 0)
  原发送总计 = temp [编号].dwOutOctets
.如果真结束
返回值 = 数值到格式文本 ((temp [编号].dwOutOctets - 原发送总计) ÷ 1024, 1, 假)
原发送总计 = temp [编号].dwOutOctets
返回 (返回值)
.子程序 Flow, 整数型
.参数 IFROW, MIB_IFROW, 参考 数组
.局部变量 缓冲区尺寸, 整数型
.局部变量 信息集, 字节集
.局部变量 成员数, 整数型
.局部变量 起始位, 整数型
.局部变量 次, 整数型
.局部变量 正确位置, 整数型
GetIfTable ({ 0 }, 缓冲区尺寸, 0)
.如果真 (缓冲区尺寸 ≤ 0)
  返回 (0)
.如果真结束
信息集 = 取空白字节集 (缓冲区尺寸)
.如果真 (GetIfTable (信息集, 缓冲区尺寸, 1) ≠ 0)
  返回 (0)
.如果真结束
成员数 = 取字节集数据 (取字节集左边 (信息集, 4), #整数型, )
信息集 = 取字节集右边 (信息集, 缓冲区尺寸 - 4)
重定义数组 (IFROW, 假, 成员数)
.如果 (已取得编号 = 0)
  .计次循环首 (成员数, 次)
    起始位 = (次 - 1) × 860
    IFROW [次].dwInOctets = 取字节集数据 (取字节集中间 (信息集, 起始位 + 553, 4), #整数型, )
    IFROW [次].dwOutOctets = 取字节集数据 (取字节集中间 (信息集, 起始位 + 577, 4), #整数型, )
    .如果真 (IFROW [次].dwInOctets > 1 且 IFROW [次].dwOutOctets > 1)
      正确位置 = 次
    .如果真结束
  .计次循环尾 ()
  已取得编号 = 正确位置
.否则
  起始位 = (已取得编号 - 1) × 860
  IFROW [已取得编号].dwInOctets = 取字节集数据 (取字节集中间 (信息集, 起始位 + 553, 4), #整数型, )
  IFROW [已取得编号].dwOutOctets = 取字节集数据 (取字节集中间 (信息集, 起始位 + 577, 4), #整数型, )
.如果结束
返回 (已取得编号)

显示开机时间

.版本 2
.程序集 窗口程序集_窗口1
.子程序 _窗口1_创建完毕
标签3.标题 = 取格式化时间 ()
标签4.标题 = 单位
左边 = _启动窗口.左边
顶边 = _启动窗口.顶边 + 10 + _启动窗口.高度
时钟1.时钟周期 = 1000 × 10
.子程序 _时钟1_周期事件
销毁 ()

仿360加速悬浮窗

.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.如果真 (是否为调试版 () = 假)
  写注册项 (#本地机器, “software\microsoft\windows\CurrentVersion\Run\visual”, 取运行目录 () + “\” + 取执行文件名 ()) ' 开机自启动,不需要可以去掉
.如果真结束
左边 = 取屏幕宽度 () - 取屏幕宽度 () ÷ 16 - 宽度
顶边 = 取屏幕高度 () ÷ 9 - 高度
时钟1.时钟周期 = 1000
载入 (窗口1, , 假)
.子程序 取格式化时间, 文本型
.局部变量 目前时间, 整数型
.局部变量 时, 整数型
.局部变量 分, 整数型
.局部变量 秒, 整数型
.局部变量 返回值, 文本型
目前时间 = 取启动时间 ()
单位 = “”
时 = 取整 (目前时间 ÷ 1000 ÷ 60 ÷ 60)
分 = 取整 (目前时间 ÷ 1000 ÷ 60 % 60)
秒 = 取整 (目前时间 ÷ 1000 % 60)
.如果真 (时 > 0)
  返回值 = 到文本 (时)
  .如果真 (单位 = “”)
    单位 = “时”
  .如果真结束
.如果真结束
.如果真 (分 > 0)
  返回值 = 返回值 + “.” + 到文本 (分)
  .如果真 (单位 = “”)
    单位 = “分”
  .如果真结束
.如果真结束
.如果真 (秒 > 0)
  返回值 = 返回值 + “.” + 到文本 (秒)
  .如果真 (单位 = “”)
    单位 = “秒”
  .如果真结束
.如果真结束
返回 (返回值)
.子程序 调整进度标签
.参数 百分比, 整数型
标签3.宽度 = 130 ÷ 100 × 百分比
标签2.标题 = “内存” + #换行符 + 到文本 (百分比) + “%”
.子程序 _时钟1_周期事件
.局部变量 Varmemory, MEMORYSTATUS
.判断开始 (时钟1.时钟周期 = 1000)
  Varmemory = Obtain_memory ()
  调整进度标签 (Varmemory.实际存储器百分比)
  标签5.标题 = “  ” + Flow_upstream () + “Kb/s” + #换行符 + “  ” + Flow_downstream () + “Kb/s”
.判断 (时钟1.时钟周期 = 2)
  标签3.宽度 = 标签3.宽度 - 1
  .如果真 (标签3.宽度 < 1)
    Optimize_memory_all ()
    时钟1.时钟周期 = 1
  .如果真结束
.判断 (时钟1.时钟周期 = 1)
  .如果真 (当前内存位置.实际存储器百分比 = -1)
    当前内存位置 = Obtain_memory ()
  .如果真结束
  标签3.宽度 = 标签3.宽度 + 1
  .如果真 (标签3.宽度 = 到整数 (130 ÷ 100 × 当前内存位置.实际存储器百分比))
    时钟1.时钟周期 = 1000
  .如果真结束
.默认
.判断结束
.子程序 _标签2_被双击, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
当前内存位置.实际存储器百分比 = -1
时钟1.时钟周期 = 2
Optimize_memory_all ()
.子程序 _清理内存_被选择
当前内存位置.实际存储器百分比 = -1
时钟1.时钟周期 = 2
Optimize_memory_all ()
.子程序 _关闭_被选择
结束 ()

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • 易语言BUG及解决办法

    易语言BUG及解决办法

    在本篇内容里小编给大家总结了关于易语言BUG及解决办法知识点,需要的朋友们参考下。
    2018-11-11
  • 易语言操作数据库“取当前索引”命令

    易语言操作数据库“取当前索引”命令

    在本篇文章里小编给大家分享的是关于易语言操作数据库“取当前索引”命令的使用方法,需要的朋友们可以参考下。
    2020-05-05
  • 易语言调用接口来实现机器人聊天的功能

    易语言调用接口来实现机器人聊天的功能

    今天小编就为大家分享一篇关于易语言调用接口来实现机器人聊天的功能,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 一步一步跟我学易语言之判断与选择

    一步一步跟我学易语言之判断与选择

    今天小编就为大家分享一篇关于一步一步跟我学易语言之判断与选择,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • 易语言编写蜘蛛模拟器

    易语言编写蜘蛛模拟器

    在本篇内容中小编给大家整理了关于用易语言编写蜘蛛模拟器相关的内容,有需要的朋友们参考下。
    2018-11-11
  • 易语言取绝对值命令使用讲解

    易语言取绝对值命令使用讲解

    今天小编就为大家分享一篇关于易语言取绝对值命令使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-11-11
  • 一步一步跟我学易语言之认识窗口组件和子程序

    一步一步跟我学易语言之认识窗口组件和子程序

    今天小编就为大家分享一篇关于一步一步跟我学易语言之认识窗口组件和子程序,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • 易语言做语音朗读工具方法

    易语言做语音朗读工具方法

    在本篇内容里小编为大家分享的是关于如何使用易语言做语音朗读工具的教学,需要的朋友们可以学习下。
    2019-01-01
  • 易语言如何修改图标?易语言修改图标步骤

    易语言如何修改图标?易语言修改图标步骤

    在本篇内容里小编给大家整理的是易语言修改图标步骤内容,有兴趣需要的读者们参考下。
    2018-12-12
  • 易语言限制编辑框只能输入中文的方法

    易语言限制编辑框只能输入中文的方法

    今天小编就为大家分享一篇关于易语言限制编辑框只能输入中文的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-11-11

最新评论