易语言仿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 ()
.子程序 _关闭_被选择
结束 ()
运行结果:
总结
以上是 易语言仿360悬浮窗实现流量监控和内存优化的代码 的全部内容, 来源链接: utcz.com/z/339589.html