# FlowCatWin **Repository Path**: hacvk/flow-cat-win ## Basic Information - **Project Name**: FlowCatWin - **Description**: https://github.com/tab16360/flowcat 的winodws版本,基于net9 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-19 - **Last Updated**: 2026-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 流量喵 · FlowCat for Windows 参考 macOS 版实现的 **Windows 原生托盘监控工具**:常驻托盘看整机网速,打开面板看历史流量与**哪个进程在读写磁盘**,定位开发、远程桌面时的带宽与 I/O 消耗来源。 ![磁盘页截图](docs-screenshot.png) **单文件 1.29 MB · Windows 10/11 x64 · 需本机安装 [.NET 9 桌面运行时](https://dotnet.microsoft.com/download/dotnet/9.0)** ## 获取与运行 仓库只放源码,**不带编译好的可执行文件**(构建产物不入库)。克隆后一条命令产出单文件: ``` dotnet publish -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true -o publish publish\FlowCatWin.exe 启动进托盘 publish\FlowCatWin.exe --panel 启动并直接打开统计面板 ``` 开发调试也可以直接 `dotnet run`。无需安装、不写注册表(除非你主动勾选"开机自动启动")、不联网上传任何数据。 > 若目标机不便安装 .NET 运行时,改用下方「从源码构建」里的自包含命令(体积约 101 MB,双击即用)。 ## 功能对照(macOS 版 → Windows 版) | 功能 | macOS 版 | Windows 版 | | --- | --- | --- | | 常驻显示 | 菜单栏猫图标 + 网速 | 托盘猫图标(悬停显示网速)+ 桌面悬浮网速窗(可拖动、可选显示磁盘速度) | | 今日 / 昨日 / 本月 | ✓ | ✓ | | 整机流量口径 | en\* 物理网卡 | 以太网 / Wi-Fi 物理网卡(排除回环、隧道、VPN 虚拟接口) | | 应用 / 代理排行 | nettop | ✗ 系统未提供每进程网络计数,需驱动级抓包,暂未实现 | | 磁盘读写排行 | 进程计数器增量 | ✓ 进程 I/O 增量,今日/近7天/近30天/累计,支持搜索、三种排序、CSV 导出 | | 磁盘健康 | SMART / IOKit | ✓ WMI `MSFT_PhysicalDisk`(健康状态 / 介质 / 温度 / 容量,缺失指标显示 —) | | 本地记录 | JSON 持久化 | ✓ JSON 持久化(每分钟保存),CSV 导出 | | 暂停 / 继续 | ✓ | ✓ 暂停期间不计时 | | 开机自启 | 登录项 | ✓ 注册表 `HKCU\...\Run` | | 界面 | SwiftUI 卡片 | ✓ WinForms 自绘卡片界面(纯白圆角卡片、分段控件、悬浮式细滚动条) | ## 使用 1. 双击 `publish\FlowCatWin.exe`。首次运行约 1–2 秒建立网卡与进程计数基线,之后开始记账。 2. 桌面右下角出现悬浮网速窗(可拖动,左键打开面板);托盘区有猫咪图标,悬停显示当前网速。 3. 双击托盘图标或左键悬浮窗打开统计面板:**网络 / 磁盘 / 健康 / 设置** 四个标签页。 4. 右键托盘图标:打开面板、暂停采样、显示/隐藏悬浮窗、开机自启、退出。 ## 数据 保存在 `%APPDATA%\流量喵\`: | 文件 | 内容 | | --- | --- | | `ledger.json` | 网络流量(按天:收 / 发 / 监控秒数) | | `disk-ledger.json` | 磁盘读写(按天:每进程读 / 写字节) | | `settings.json` | 暂停、悬浮窗、自启等设置 | 无需账号、不上传数据、不记录任何通信内容。CSV 导出在"磁盘"标签页右上角。 ## 统计口径说明 - **整机流量**只统计物理网卡(以太网 / Wi-Fi),含局域网与协议开销,多网卡汇总;**不能替代运营商账单**。 - **磁盘读写**为进程 I/O 计数器增量,覆盖所有磁盘、无法可靠归属到具体盘符;存活时间短于采样间隔的进程可能漏采。 - 暂停、睡眠期间不计数;网络切换或系统计数器重置的间隔会被跳过。 - 磁盘温度等指标取决于硬件与驱动是否上报,缺失时显示 —;本页只做读取展示,不做磁盘自检。 ## 从源码构建 需要 .NET 9 SDK(含 Windows 桌面工作负载): ```sh cd flowcat-win dotnet build -c Release # 框架依赖单文件(本仓库 publish/ 下的版本,约 1.3 MB,目标机需 .NET 9 桌面运行时) dotnet publish -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true -o publish # 自包含单文件(目标机无需任何运行时;实测约 101 MB,超过 Gitee 单文件限制,只适合本地分发) dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true \ -p:IncludeNativeLibrariesForSelfExtract=true -o publish-selfcontained ``` ## 项目结构 ```text Program.cs 托盘主体、采样定时器、右键菜单编排 Ledger.cs 数据模型(含按小时记账)、JSON 持久化、汇总与格式化 NetMon.cs 物理网卡流量采样(计数器增量) DiskMon.cs 每进程磁盘 I/O 采样 + 磁盘健康(WMI) PanelForm.cs 统计面板(网络 / 磁盘 / 健康 / 设置 四页) Ui.cs 自绘组件库:圆角卡片、分段控件、胶囊按钮、徽章、排行行、柱状图、悬浮滚动条 FloatWidget.cs 桌面悬浮网速窗 CatIcon.cs 猫咪图标矢量绘制 app.ico 应用与托盘图标 tools/ 开发期辅助:窗口截图、暗色像素扫描(UI 验收用) ``` ## 已知限制 - 不提供每进程的网络流量排行:Windows 未开放该计数,需驱动级抓包。 - 磁盘读写无法按盘符归属;`NtQuerySystemInformation` 的进程 I/O 增量在极端高频写入下可能有误差。 - 界面为 Per-Monitor V2 DPI 感知,但混屏(不同缩放率的多显示器)下的悬浮窗位置可能需要重新拖动。 ## 许可 沿用原项目「流量喵」的许可条款。本仓库当前**尚未包含 LICENSE 文件**,补充后再在此处链接。