流量监控思路。 API

社区服务
高级搜索
猴岛论坛电脑百科流量监控思路。 API
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
2个回复

流量监控思路。 API

楼层直达
他妻负我°

ZxID:8333252

等级: 督察
配偶: 夜空
 做个俗人 贪财好色

举报 只看楼主 使用道具 楼主   发表于: 2013-07-02 0
流量监控器.rar[点击下载](21 K) 下载次数:6 累计下载获得 DB 10
.版本 2
.支持库 eAPI
.支持库 iext
.支持库 iext5

.程序集 窗口程序集1
.程序集变量 信息记录, MIB_IFROW, , "0"
.程序集变量 原接收总计, 整数型
.程序集变量 原发送总计, 整数型
.程序集变量 接收进度条句柄, 整数型
.程序集变量 发送进度条句柄, 整数型
.程序集变量 总流量, 小数型
.程序集变量 总下载流量, 小数型
.程序集变量 总上传流量, 小数型
.程序集变量 原窗口函数, 整数型
.程序集变量 跟踪事件, TRACKMOUSEEVENT
.程序集变量 已移入, 逻辑型
.程序集变量 菜单内容, 文本型
.程序集变量 runpath, 文本型
.程序集变量 mypath, 文本型
.程序集变量 路径, 文本型
.程序集变量 监控编号
.程序集变量 最大编号
.程序集变量 透明度
.程序集变量 是否记录, 逻辑型
.程序集变量 是否置顶, 逻辑型
.程序集变量 值
.程序集变量 自动运行, 逻辑型
.程序集变量 菜单标识, 整数型

.子程序 创建互斥体, 整数型
.参数 文本标识, 文本型
.局部变量 i, 整数型
.局部变量 ret, 整数型
.局部变量 nil, SECURITY_ATTRIBUTES

ret = OpenMutex (2031617, 1, 文本标识)
.如果 (ret ≠ 0)
    返回 (0)
.否则
    i = CreateMutex (nil, 1, 文本标识)
.如果结束
返回 (i)

.子程序 _透明标签1_鼠标位置被移动, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型

.如果真 (已移入 = 假)
    跟踪事件.bSize = 16
    跟踪事件.dwFlags = 2
    跟踪事件.hwndTrack = 透明标签1.取窗口句柄 ()
    TrackMouseEvent (跟踪事件)
    已移入 = 真
    .如果 (_启动窗口.顶边 < 200)
        窗口1.移动 (_启动窗口.左边, _启动窗口.顶边 + 23, 155, 157)
    .否则
        窗口1.移动 (_启动窗口.左边, _启动窗口.顶边 - 135, 155, 157)
    .如果结束
    窗口1.可视 = 真
.如果真结束


.子程序 子程序_窗口函数, 整数型
.参数 hWnd, 整数型
.参数 Msg, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型

.判断开始 (Msg = 675)
    已移入 = 假
    窗口1.可视 = 假
.默认

.判断结束
返回 (呼叫窗口函数地址_ (原窗口函数, hWnd, Msg, wParam, lParam))

.子程序 __启动窗口_创建完毕

.如果真 (创建互斥体 (到文本 (516756)) = 0)
    结束 ()
.如果真结束

原窗口函数 = 取得窗口信息_ (透明标签1.取窗口句柄 (), -4)
SetWindowLong (透明标签1.取窗口句柄 (), -4, &子程序_窗口函数)

路径 = “Software\流量监控\”
runpath = “Software\Microsoft\Windows\CurrentVersion\Run\流量监控”
mypath = 取运行目录 () + “\” + 取执行文件名 ()
mypath = 子文本替换 (mypath, “\\”, “\”, , , 真)
菜单内容 = #菜单内容


置外形图片 (#背景1, #品红)
载入 (窗口1, , 假)

取信息记录 ()
最大编号 = 取数组成员数 (信息记录)



.如果 (注册项是否存在 (#现行用户, 路径 + “x”))
    _启动窗口.移动 (取数值注册项 (#现行用户, 路径 + “x”, ), 取数值注册项 (#现行用户, 路径 + “y”, ), 155, 22)
.否则
    _启动窗口.移动 ((取屏幕宽度 () - 155) ÷ 2, 0, 155, 22)
.如果结束
监控编号 = 取数值注册项 (#现行用户, 路径 + “监控编号”, )
.如果 (监控编号 < 1 或 监控编号 > 最大编号)
    _气球提示框1_自定义超链接被单击 (“m1”)
.否则
    菜单内容 = 子文本替换 (菜单内容, “号(”, “号(” + 到文本 (监控编号), , , 真)
.如果结束



透明度 = 取数值注册项 (#现行用户, 路径 + “透明度”, )
.如果 (透明度 < 50 或 透明度 > 255)
    _气球提示框1_自定义超链接被单击 (“m2”)
.否则
    菜单内容 = 子文本替换 (菜单内容, “度(”, “度(” + 到文本 (透明度), , , 真)
.如果结束
设置窗口透明度 (_启动窗口.取窗口句柄 (), 透明度)
设置窗口透明度 (窗口1.取窗口句柄 (), 透明度)



.如果 (取数值注册项 (#现行用户, 路径 + “记录”, ) = 1)
    是否记录 = 真
    菜单内容 = 子文本替换 (菜单内容, “量(×”, “量(√”, , , 真)
    总流量 = 取数值注册项 (#现行用户, 路径 + “总流量”, )
.否则
    是否记录 = 假
    总流量 = 0
.如果结束


.如果真 (注册项是否存在 (#现行用户, runpath))
    菜单内容 = 子文本替换 (菜单内容, “行(×”, “行(√”, , , 真)
    自动运行 = 真
    .如果真 (取文本注册项 (#现行用户, runpath, ) ≠ mypath)
        写注册项 (#现行用户, runpath, mypath)
    .如果真结束

.如果真结束
值 = 取数值注册项 (#现行用户, 路径 + “置顶”, 2)
.判断开始 (值 = 2)
    是否置顶 = 真
    写注册项 (#现行用户, 路径 + “置顶”, 1)
.判断 (值 = 1)
    是否置顶 = 真
.判断 (值 = 0)
    连续赋值 (假, _启动窗口.总在最前, 窗口1.总在最前, 是否置顶)
    菜单内容 = 子文本替换 (菜单内容, “顶(√”, “顶(×”, , , 真)
.默认

.判断结束


_启动窗口.可视 = 真
时钟1.时钟周期 = 1000

值 = 取数值注册项 (#现行用户, 路径 + “提示”, 2)
.判断开始 (值 = 2)
    写注册项 (#现行用户, 路径 + “提示”, 1)
    弹出提示 (2, #提示内容)
.判断 (值 = 1)
    弹出提示 (2, #提示内容)
.判断 (值 = 0)

.默认

.判断结束


.子程序 _时钟1_周期事件

取信息记录 ()
计算流量 ()
.如果真 (是否记录 = 真)
    写注册项 (#现行用户, 路径 + “总流量”, 总流量)
.如果真结束


.子程序 计算流量
.局部变量 发送速率, 整数型
.局部变量 接收速率, 整数型
.局部变量 整数容器, 整数型
.局部变量 接收, 文本型
.局部变量 发送, 文本型
.局部变量 已上传流量, 文本型
.局部变量 已下载流量, 文本型
.局部变量 合计总流量, 文本型

.如果真 (原接收总计 = 0)
    原接收总计 = 信息记录 [监控编号].dwInOctets
.如果真结束
接收速率 = 信息记录 [监控编号].dwInOctets - 原接收总计
接收 = 数值到格式文本 (接收速率 ÷ 1024, 1, 假)
原接收总计 = 信息记录 [监控编号].dwInOctets
接收透明标签.标题 = 到文本 (接收) + “KB/S”
窗口1.下载速度.标题 = “下载速度:” + 接收透明标签.标题

.如果真 (原发送总计 = 0)
    原发送总计 = 信息记录 [监控编号].dwOutOctets
.如果真结束
发送速率 = 信息记录 [监控编号].dwOutOctets - 原发送总计
发送 = 数值到格式文本 (发送速率 ÷ 1024, 1, 假)
原发送总计 = 信息记录 [监控编号].dwOutOctets
发送透明标签.标题 = 到文本 (发送) + “KB/S”
窗口1.上传速度.标题 = “上传速度:” + 发送透明标签.标题

总下载流量 = 总下载流量 + 接收速率 ÷ 1024 ÷ 1024
总上传流量 = 总上传流量 + 发送速率 ÷ 1024 ÷ 1024
总流量 = 总流量 + (接收速率 ÷ 1024 + 发送速率 ÷ 1024) ÷ 1024


合计总流量 = 到文本 (四舍五入 (总流量, 1))
.如果 (总流量 > 1024)
    窗口1.流量标签.标题 = “合计总流量:” + 到文本 (四舍五入 (总流量 ÷ 1024, 1)) + “GB”
.否则
    窗口1.流量标签.标题 = “合计总流量:” + 合计总流量 + “MB”
.如果结束


已下载流量 = 到文本 (四舍五入 (总下载流量, 1))
.如果 (总下载流量 > 1024)
    窗口1.下载流量透明标签.标题 = “已下载流量:” + 到文本 (四舍五入 (总下载流量 ÷ 1024, 1)) + “GB”
.否则
    窗口1.下载流量透明标签.标题 = “已下载流量:” + 已下载流量 + “MB”
.如果结束


已上传流量 = 到文本 (四舍五入 (总上传流量, 1))
.如果 (总上传流量 > 1024)
    窗口1.上传流量透明标签.标题 = “已上传流量:” + 到文本 (四舍五入 (总上传流量 ÷ 1024, 1)) + “GB”
.否则
    窗口1.上传流量透明标签.标题 = “已上传流量:” + 已上传流量 + “MB”
.如果结束


.子程序 取信息记录
.局部变量 成员数, 整数型
.局部变量 信息集, 字节集
.局部变量 缓冲区尺寸, 整数型
.局部变量 起始位, 整数型
.局部变量 整数容器, 整数型

取网络信息 ({ 0 }, 缓冲区尺寸, 0)
.如果真 (缓冲区尺寸 ≤ 0)
    返回 ()
.如果真结束
信息集 = 取空白字节集 (缓冲区尺寸)
.如果真 (取网络信息 (信息集, 缓冲区尺寸, 1) ≠ 0)
    返回 ()
.如果真结束
成员数 = 取字节集数据 (取字节集左边 (信息集, 4), #整数型, )
信息集 = 取字节集右边 (信息集, 缓冲区尺寸 - 4)
重定义数组 (信息记录, 假, 成员数)
.计次循环首 (成员数, 整数容器)
    起始位 = (整数容器 - 1) × 860
    信息记录 [整数容器].dwInOctets = 取字节集数据 (取字节集中间 (信息集, 起始位 + 553, 4), #整数型, )
    信息记录 [整数容器].dwOutOctets = 取字节集数据 (取字节集中间 (信息集, 起始位 + 577, 4), #整数型, )
.计次循环尾 ()

.子程序 __启动窗口_位置被改变

写注册项 (#现行用户, 路径 + “x”, _启动窗口.左边)
写注册项 (#现行用户, 路径 + “y”, _启动窗口.顶边)

.子程序 _透明标签1_鼠标右键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型

弹出提示 (1, 菜单内容)

.子程序 _透明标签1_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型

_启动窗口.发送信息 (161, 2, 0)

.子程序 _气球提示框1_自定义超链接被单击
.参数 标识文本, 文本型
.局部变量 默认值
.局部变量 是否输入, 逻辑型

.判断开始 (标识文本 = “m1”)
    .如果 (监控编号 < 1 或 监控编号 > 最大编号)
        默认值 = 2
    .否则
        默认值 = 监控编号
    .如果结束
    .判断循环首 (是否输入 = 假)
        是否输入 = 输入框 (“一般win7填入14 XP填入2,不行请尝试从1开始递增填入,输入范围1-” + 到文本 (最大编号), “请输入监控编号”, 到文本 (默认值), 监控编号, #输入整数)
        .如果真 (监控编号 < 1 或 监控编号 > 最大编号)
            是否输入 = 假
        .如果真结束

    .判断循环尾 ()
    写注册项 (#现行用户, 路径 + “监控编号”, 监控编号)
    菜单内容 = 子文本替换 (菜单内容, “号(” + 取指定内容 (菜单内容, “号(”, “)”), “号(” + 到文本 (监控编号), , , 真)

.判断 (标识文本 = “m2”)
    .如果 (透明度 < 50 或 透明度 > 255)
        默认值 = 225
    .否则
        默认值 = 透明度
    .如果结束
    .判断循环首 (是否输入 = 假)
        是否输入 = 输入框 (“窗口透明度,50透明度最高,255不透明,输入范围50-255”, “请输入透明度”, 到文本 (默认值), 透明度, #输入整数)
        .如果真 (透明度 < 50 或 透明度 > 255)
            是否输入 = 假
        .如果真结束

    .判断循环尾 ()
    写注册项 (#现行用户, 路径 + “透明度”, 透明度)
    设置窗口透明度 (_启动窗口.取窗口句柄 (), 透明度)
    设置窗口透明度 (窗口1.取窗口句柄 (), 透明度)
    菜单内容 = 子文本替换 (菜单内容, “度(” + 取指定内容 (菜单内容, “度(”, “)”), “度(” + 到文本 (透明度), , , 真)

.判断 (标识文本 = “m3”)
    .如果 (是否置顶 = 真)
        菜单标识 = 7
        写注册项 (#现行用户, 路径 + “置顶”, 0)
        连续赋值 (假, _启动窗口.总在最前, 窗口1.总在最前, 是否置顶)
        菜单内容 = 子文本替换 (菜单内容, “顶(√”, “顶(×”, , , 真)
    .否则
        菜单标识 = 8
        写注册项 (#现行用户, 路径 + “置顶”, 1)
        连续赋值 (真, _启动窗口.总在最前, 窗口1.总在最前, 是否置顶)
        菜单内容 = 子文本替换 (菜单内容, “顶(×”, “顶(√”, , , 真)
    .如果结束

.判断 (标识文本 = “m4”)
    .如果 (是否记录 = 假)
        菜单标识 = 5
        是否记录 = 真
        菜单内容 = 子文本替换 (菜单内容, “量(×”, “量(√”, , , 真)
        写注册项 (#现行用户, 路径 + “记录”, 1)
    .否则
        菜单标识 = 6
        是否记录 = 假
        菜单内容 = 子文本替换 (菜单内容, “量(√”, “量(×”, , , 真)
        写注册项 (#现行用户, 路径 + “记录”, 0)
        写注册项 (#现行用户, 路径 + “总流量”, 0)

    .如果结束

.判断 (标识文本 = “m5”)
    .如果 (自动运行 = 假)
        .如果 (写注册项 (#现行用户, runpath, mypath))
            菜单标识 = 2
            自动运行 = 真
            菜单内容 = 子文本替换 (菜单内容, “行(×”, “行(√”, , , 真)
        .否则
            菜单标识 = 3
        .如果结束

    .否则
        .如果 (删除注册项 (#现行用户, runpath))
            菜单标识 = 4
            自动运行 = 假
            菜单内容 = 子文本替换 (菜单内容, “行(√”, “行(×”, , , 真)
        .否则
            菜单标识 = 3
        .如果结束

    .如果结束

.判断 (标识文本 = “m6”)
    菜单标识 = 9
.判断 (标识文本 = “m7”)
    菜单标识 = 1
.判断 (标识文本 = “m8”)
    结束 ()
.判断 (标识文本 = “yes”)
    时钟1.时钟周期 = 0
    是否记录 = 假
    删除注册项 (#现行用户, 路径)
    删除注册项 (#现行用户, runpath)
    菜单标识 = 10
.判断 (标识文本 = “notip”)
    写注册项 (#现行用户, 路径 + “提示”, 0)
    菜单标识 = 12
.默认

.判断结束


.子程序 弹出提示
.参数 样式, 整数型, , 1菜单 2提示
.参数 内容, 文本型

.如果 (样式 = 1)
    气球提示框1.圆角横向尺寸 = 0
    气球提示框1.圆角纵向尺寸 = 0
    气球提示框1.手柄宽度 = 0
    气球提示框1.手柄高度 = 0
.否则
    气球提示框1.圆角横向尺寸 = 3
    气球提示框1.圆角纵向尺寸 = 3
    气球提示框1.手柄宽度 = 9
    气球提示框1.手柄高度 = 5
.如果结束
.如果 (_启动窗口.顶边 > 300)
    气球提示框1.手柄方位 = 10
    气球提示框1.弹出提示框 (_启动窗口.左边 + 60, _启动窗口.顶边, 内容, -1, )
.否则
    气球提示框1.手柄方位 = 1
    气球提示框1.弹出提示框 (_启动窗口.左边 + 72, _启动窗口.顶边 + 22, 内容, -1, )
.如果结束


.子程序 _气球提示框1_提示框即将隐藏

.判断开始 (菜单标识 = 0)
    返回 ()
.判断 (菜单标识 = 1)
    弹出提示 (2, #关于内容)
.判断 (菜单标识 = 2)
    弹出提示 (2, 文本格式化 (“msg1”, “操作成功,程序将开机自启动”))
.判断 (菜单标识 = 3)
    弹出提示 (2, 文本格式化 (“msg2”, “操作失败,可能被安全软件阻止”))
.判断 (菜单标识 = 4)
    弹出提示 (2, 文本格式化 (“msg3”, “操作成功,程序不会开机自启动”))
.判断 (菜单标识 = 5)
    弹出提示 (2, 文本格式化 (“msg4”, “下次运行时总流量会累加计算”))
.判断 (菜单标识 = 6)
    弹出提示 (2, 文本格式化 (“msg5”, “功能已关闭”))
.判断 (菜单标识 = 7)
    弹出提示 (2, 文本格式化 (“msg6”, “窗口不会置顶”))
.判断 (菜单标识 = 8)
    弹出提示 (2, 文本格式化 (“msg7”, “窗口将总在最前端显示”))
.判断 (菜单标识 = 9)
    弹出提示 (2, 文本格式化 (“msg8”, “<a msg=no><font size=15pt>   真的要恢复默认设置?   </font><br><font size=3pt>                                 </font></a></br><a msg=yes><font size=10pt>     确定   </font></a><a msg=no><font size=10pt>   取消     </font></a>”))
.判断 (菜单标识 = 10)
    弹出提示 (2, 文本格式化 (“msg9”, “恢复默认设置成功,程序将退出”))
    菜单标识 = 11
    返回 ()
.判断 (菜单标识 = 11)
    结束 ()
.判断 (菜单标识 = 12)
    弹出提示 (2, 文本格式化 (“msg10”, “下次运行将不再弹出提示信息”))
.默认

.判断结束
菜单标识 = 0

.子程序 文本格式化, 文本型
.参数 标识, 文本型
.参数 文本, 文本型

返回 (“<a msg=” + 标识 + “><font size=10pt>   ” + 文本 + “   </font></a>”)

.子程序 取指定内容, 文本型
.参数 完整内容, 文本型
.参数 左边文本, 文本型
.参数 右边文本, 文本型
.局部变量 临时位置, 整数型
.局部变量 总长度, 整数型
.局部变量 临时文本, 文本型

总长度 = 取文本长度 (完整内容)
临时位置 = 寻找文本 (完整内容, 左边文本, , 假) + 取文本长度 (左边文本)
临时文本 = 取文本中间 (完整内容, 临时位置, 总长度)
总长度 = 取文本长度 (临时文本)
临时位置 = 寻找文本 (临时文本, 右边文本, , 假) - 1
临时文本 = 取文本中间 (临时文本, 1, 临时位置)
返回 (临时文本)
本帖de评分: 1 条评分 DB +3
DB+3 2013-07-02

优秀文章

2014

ZxID:21900290

等级: 元老
     ๑热心会员๑      ๑值得拥有๑

举报 只看该作者 沙发   发表于: 2013-07-02 0
不错, 谢谢分享
引用
adminis.

ZxID:27317457

等级: 上等兵
举报 只看该作者 板凳   发表于: 2013-07-02 0
什么东西啊?
« 返回列表
发帖 回复