自己动手做一个屏幕扩展APP(?)让老平板作为扩展屏幕

作者:V君 发布于:2021-4-12 23:25 Monday 分类:我的应用

这次先扯一句再开始:对标题中问号的解释,由于这玩意儿不仅仅是个APP,也支持Web方式,而且还有PC桌面端,姑且就叫做APP(?)吧 乂目

TL;DR [ 下载 ][ 源代码 ]

效果:将指定窗口截图并以以下方式广播,可以将移动设备或者另一台电脑作为扩展屏幕
 - HTTP、MjpegOverHttp(?实为 PNG in multipart/x-mixed-replace)
 - Socket(APP)
环境:
 - PC端基于 .NET Framework 4.0 编译,未在低于 Win 10 环境下测试
 - 为不支持 MjegOverHttp 的旧版本 Android 平板做了 APP,已在 Android 3.0.1 上测试
用法:
 1. 在PC端启动 ScreenExtender.exe 检查监听IP和端口
 2. 点击Listen启动监听,如果弹出防火墙,请允许
 3. 点击 Add 按钮,点击要添加窗口,添加完之后可在预览画面上拖动
 4. 在浏览器访问监听IP和端口
  - http://192.168.x.x:61234/frame 获取当前帧
  - http://192.168.x.x:61234/ 使用性能较低的画布方式轮询绘制帧
  - 较新的设备(浏览器)可以访问 http://192.168.x.x:61234/mjpeg 可获得更高性能
 A. 为老设备准备的Android端
  - 安装启动后会弹出输入IP和端口的输入框,输入正确IP和端口
  - 触摸OK即可开始工作,APP会记住最后一次使用的IP和端口
限制:指定的窗口不能最小化,可以被其他窗口遮住在后台运行

稍微扯扯:

尽管目前用了5块1080p显示器,但还是不能满足需求,仍有一些需要监视的东西没能摆下,手里虽然还有闲置的显示器,但电脑桌已经没有地方放第六块显示器了,大概只能钉在墙上了吧……

想起还有一块闲置的老Android平板,那就折腾折腾把他当一块扩展屏幕来用吧。起初用了第三方APP,发现平板的Android版本太低,而且找不到包可以刷(我不会说经历多次变砖然后救回来,直到放弃治疗的)。

想起早些年玩浏览器视讯直播的 MJPEG 了,但遗憾的是老平板的Android版本只有3.0.1,连MJPEG都不支持(然而还好支持画布,但性能太低了),那就专门给它做了个APP,用着效果还不错。

对于版本较新的移动设备,可以直接用浏览器访问 mjpeg 方式

标签: 软件开发 C# Winform HTTP Android

评论(1) 引用(0) 浏览(1000)

别再去哔哩哔哩买大会员追动画了,让BT自动下载,下完还会发邮件通知你

作者:V君 发布于:2021-3-14 17:22 Sunday 分类:我的应用

TL;DR [ 下载 ][ 源代码 ]

效果:监视指定RSS更新,提取磁链,调用Aria2下载,开始/完成下载时可发送邮件通知
限制:尚不明确
环境:基于 .NET Core 3.1 单文件发布,未在低于 Win 10 环境下测试
用法:见文档,不过还是简单扯扯
 1. 下载 Aria2 并设置 Path 环境变量,重启资源管理器
 2. 直接双击 EXE 窗口一闪,自动在旁边创建数据库文件
 3. 使用数据库管理工具编辑配置和源表
 F. 传递 daemon 30 参数放在后台运行

稍微扯扯:

最近B站下架动画越发放肆,而且以动画下架为由要求退款大会员被拒绝,令我很生气,那就像 用 D3NS 代替花生壳 一样把它换掉,以后不再去B站看动画!

这个项目的名称 BangumiTurret 义为盯住节目的炮塔,一旦有新的节目出现就干(下载)它,也能故意简称 BT,文章标题的 BT 就是故意混淆了 乂目。我不会告诉你还有一个叫做 FuckBili 的项目内部代号 乂目

标签: 软件开发 C# RSS 下载

评论(3) 引用(0) 浏览(913)

做了个图形界面磁盘镜像扩容小工具,代替命令行避免误操作

作者:V君 发布于:2021-2-9 13:51 Tuesday 分类:我的应用

TL;DR [ 下载 ][ 源代码 ]

点击查看原图

效果:对指定的文件增加长度
限制:尚不明确
环境:基于 .NET 2.0 生成,在 XP 之后的系统应该不需要安装额外的组件
用法:
 1. 将要扩容的文件拖入 File 框或者点击 Select 按钮选择文件
 2. 输入大小,选择单位
 3. 查看预览大小是否符合预期,点击 Go 按钮。
 F. 若操作成功,工具会自动退出避免二次误操作。

稍微扯扯:

最近发现 iSCSI 用的游戏盘镜像空间不够了,而且 iSCSI 服务端没有实现(引出)扩容功能。其实给裸盘镜像(raw disk image)扩容只需要增加文件长度,然后再用磁盘管理器调整分区(扩展卷)以用完容量,这就吼了,但手头并没有好用的工具,那就自己撸了。

做出来用爽了之后还没有发表博客文章,而是先让网友们看看。有网友说可以用 fsutil 这个命令行工具来改变文件大小,而如果错误地输入了一个比原来小的值,那文件就会丢失数据,这有点危险。

因此对于像我害怕打错命令行参数丢数据的,来个防止误操作的图形界面还是可以有 乂目

标签: 软件开发 C# Winform 磁盘 磁盘扩容

评论(0) 引用(0) 浏览(626)

通过WebSocket隧道,尝试将ASP.NET网站空间当作VPS来使用

作者:V君 发布于:2021-1-17 11:50 Sunday 分类:折腾手记

先上 PoC源代码 再开始扯,这次不是着重解决某个问题,而是尝试确定某种可能性。

以前使用过 C9.io 提供的免费在线开发环境来搞各种事情,包括正常上网,无非是利用 Web Sockets 建立隧道,然后配合客户端连接到在上面运行各种应用程序。
现在C9已经被收购且停止免费了,那就公开来说吧w

这次也不例外,只不过花了点钱搞了个支持 ASP.NET 4.5+ 的网站空间,然后在上面搞类似的事情。

基础设施 -- WebSocket 转 TCP 模块

首先要使用 WebSocket 来建立一条隧道,要求网站空间支持且启用 WebSocket,不然没法整。这里有个未经优化,但还能凑合着用的例子,只要挂在 HttpModule 中 HttpApplication 的 PostMapRequestHandler 事件,填好参数就能吃。

折腾1 -- SSH 终端

略去寻找绿色 SSH 服务端的辛酸过程,时间直接转到发现 FxSsh 这个纯托管实现的服务端。这里要分成两个部分来扯,分别是使用基于 ConPTY 的 MiniTerm 和兼容低版本 Windows 的简单兼容实现。由于 FxSsh 主要实现的是 SSH 协议通道,服务端的终端并没有适配,尽管源代码中带了个名为 MiniTerm 的 DEMO 来适配到较新系统的 ConPTY。

第一部分:基于 MiniTerm 的实现。原版的 MiniTerm 虽然导入了 ResizePseudoConsole 这个 API 但并没有使用。而且由于 NuGet 上的 FxSsh 不是最新版,没有窗口大小变更事件的支持。 因此我把他们全都拷贝到自己的项目中并注明来源了。在此之上再加以修改 MiniTerm 使窗口大小变更事件适配到 MiniTerm 的实现。目前并没有发现太多问题。有点小遗憾的是 MiniTerm 使用的 ConPTY 功能是 Windows 10 近些年的更新才引入的,因此许多网站空间的系统都不支持,会报「在 kernel32 中找不到 CreatePseudoConsole 入口」的错误,因此我准备了另一个方案,见接下来的第二部分。

第二部分:另行实现一个兼容低版本 Windows 的控制台进程适配。在项目中起名为 EasyTerminal。起初简单将控制台进程的标准输入输出还有错误输出重定向到 SSH 通道,然鹅,回车键不起作用,而且不回显。将回车键拦截下来,改成 StandardInput.WriteLine 调用,总算是能满足最基本的需求。尽管还是没有实时回显,得按下回车键之后才显示出来,功能按键和窗口大小什么的更无从说起。目前仍在使用零碎的时间持续摸索(咕XD)…

折腾2 -- 正常上网 将网站空间当作 V2 服务端使用

编译部署这个项目,然后将 V2 的两个 exe 和配置文件丢进 App_Data 目录,然后使用 WS 隧道连接到监听的 URL,最后在 V2 客户端指向 WS 隧道客户端,这时候就能吃了。分配了较大的缓冲区大小,这应该能有效减少损耗,如果网速慢,你需要测一下空间到你的网速。

不水。

标签: 软件开发 个人服务器 C# HTTP Web技术 传输协议 Windows .NET IIS WebSocket

评论(0) 引用(0) 浏览(407)

做了个节奏光剑实时状态挂件

作者:V君 发布于:2020-10-28 22:38 Wednesday 分类:折腾手记

点击查看原图

TL;DR [ 源代码 ] [ 本体 ]


效果:在游戏画面前叠加一层,用于显示分数、歌曲、性能信息和图表
安装:使用 ModAssistant 安装 HTTPStatus 和 YUR 后将 dll 丢进 Plugins 目录然后运行exe
  若找插件管理器找不到 YUR,去官方 discord 找
  HTTPStatus 插件可以去 GitHub 找 release 若是没有 release 就自己编译吧!
配置:无需任何配置
扯扯:

看到一些视频有些叠加在前面的挂件,后来了解到原来是通过HTTP方式向外部提供来实现的。现有的实现大部分都是基于网页,然后用OBS之类的录屏软件做叠加处理。

我一直用 GeFore Experience 来录屏,懒得改用 OBS。那就自己撸一个吧,反正半透明的窗体也不难搞,于是这玩意儿就出来了。早期只有 HTTPStatus 的数据,后来想到可以把 YUR 的心率和燃烧率整合进来,又做了个插件去读YUR的数据(插件的插件……)。再后来,想知道为啥帧数很低,就把 OpenHardwareMonitor 集成进来读取 CPU 和 GPU 负载了(发现是 CPU 拖了后腿…),它自带有 sys 文件会释放到 exe 旁边,如果杀毒软件拦截,你就要做出选择是相信 OpenHardwareMonitor 还是相信你的杀毒软件了,我不背锅。

最后就是解释为啥这么迟才发表文章了。还不是因为游戏更新,而且YUR插件也没出来,就一直拖着一直到昨天去 YUR 的 discord 问了才知道,原来插件已经出来,但是还没有通过 BeatMods 的审核…(我想说我做的音量插件也一直处于 Pending 状态,别人家晚来的插件都通过了。。

标签: 软件开发 插件 C# Winform Unity VR游戏

评论(0) 引用(0) 浏览(801)

Powered by emlog 去你妹的备案 sitemap