twinBASIC 更新:2026年5月5日/替代VB6,VB7继任者
前言2021 年 4 月 23 日我与 Wayne Phillips 在维也纳 Access 开发者大会上向全球首次介绍了twinBASIC。当时我大胆预测到 2025 年twinBASIC搭配 Monaco 编辑器将取代 VBA 及其老旧开发环境。为实现这一目标我推出这份每周更新持续向 VBA 开发者社区同步项目动态、分享相关文章、提升社区参与度。更新时间每周一原每周日 参与项目渠道定制 twinBASIC IDE 安装指南twinBASIC Discord 服务器项目交流twinBASIC WikiVBx 不具备的新特性清单GitHub 问题跟踪器提交 BugtwinBASIC/VBx LinkedIn 群组✨ 本周亮点1. DevCon 2026 twinBASIC 演讲视频公开维也纳 Access 开发者大会是全球最大的英语区 Microsoft Access 开发者会议。自 2021 年 twinBASIC 发布以来我每年都在此发表专属技术演讲。本次大会组委会免费公开了我的 twinBASIC 专场录像完整版已上线 YouTube。2. twinBASIC 订阅许可模式重磅澄清本周 Discord 社区关于订阅机制的问答颠覆了许多老用户的认知用户疑问取消订阅后能否继续使用订阅期内的版本编译还是完全无法编译官方回复WaynePhillipsEA订阅取消后可永久使用订阅期内最新版本不受影响订阅到期后发布的新版本将拒绝你的许可证密钥不会自动回退到社区版只是失去后续更新与官方支持核心结论订阅≈订阅期内版本的永久授权 Discord 社区聊天摘要1. 控制台应用与进程间通信 ️alaskandruid 在外部调用 tB 控制台程序捕获 stdout 时遇到运行时错误 5fafalone 提供修复方案通过GetConsoleMode检测管道重定向用WriteFile替代WriteConsoledeletedewd 推荐使用运行对象表ROT实现 tB 与 C# 进程间通信2. 高精度基准测试 ⏱️wqweto 分享TimerEx辅助函数基于QueryPerformanceCounter实现比内置Timer更精准的计时3. CTGUI/SFML DLL 绑定移植 alaskandruid 完成 CTGUITGUI 的 C 绑定与 CSFML API 向 twinBASIC 的移植解决UTF-32 字符串参数传递难题Wayne 提供StringToUTF32转换方案确认AddressOf函数回调可正常工作计划将完整绑定发布到 GitHub 并提交为 twinpack4. 二进制文件 I/O 与 UDT 处理 问题使用Put写入固定字符串 UDT 数组时记录数异常结论二进制 I/O 中应使用 **Len磁盘大小**而非LenB内存字节大小 已报告 Bug多继承 Bug同时继承两个基类并重写共享方法时调用会导致运行时崩溃已确认twinpack 导出路径问题IDE 会自动在配置路径后追加项目名EXE 项目无此问题已提交 许可与订阅模式说明订阅用户保留订阅期内最新版本永久使用权无后续更新与支持社区版无许可证也可使用编译器但不支持 LLVM 优化、64 位无启动画面、跨平台等付费特性 开发进度与社区动态社区反馈近期发布节奏放缓属于项目成熟化的正常现象官方回应新版本即将发布对项目方向充满信心 周边工具更新️ ZoneStripper Shell 扩展新增文件夹支持fafalone 更新了用于移除文件 “网页标记Mark of the Web” 的右键工具新增支持文件夹批量移除修复注册表文件问题无需重新编译 DLL直接合并新.reg 文件即可项目地址GitHub fafalone/ZoneStripperExt原文https://nolongerset.com/twinbasic-update-may-5-2026/亮点包括在YouTube上公开发布我的DevCon 2026 twinBASIC演讲对tB许可条款的意外澄清以及更新fafalone的MotW实用工具。2026年5月5日 •7分钟阅读2021年4月23日我帮助Wayne Phillips在Vienna Access DevCon会议上向世界介绍了twinBASIC。我大胆预测到2025年twinBASIC以及Monaco编辑器将取代VBA及其过时的开发环境。为了实现这一目标这份每周更新是我试图让VBA开发社区保持对这个项目的记忆。每周周日周一我将提供项目状态的更新链接到讨论 twinBASIC 的新文章并 generally 尝试增加对项目的参与度。如果您遇到应包含在此处的项目请在下面留言。以下是参与该项目的链接定制双BASIC IDE安装指南twinBASIC Discord 服务器(讨论该项目)twinBASIC 维基(新功能列表不在 VBx 中)GitHub 问题跟踪器报告错误twinBASIC/VBx LinkedIn Group亮点DevCon 2026 twinBASIC 在 YouTube 上的展示Access DevCon 维也纳是世界上最大的英语微软Access开发人员会议。自2021年twinsBASIC首次亮相以来我每年都荣幸地参加我为这个Access开发人员群体提供了一个专门关于twinsBASIC的会议。再次感谢Karl Donaubauer和其它DevCon会议组织者他们慷慨地将我的twinBASIC演讲作为三个在会议付费墙外分享的会议之一发布。完整的录像可以在YouTube上观看订阅许可模型澄清在本周的Discord聊天中有人问了一个问题官方答案让许多长期成员感到惊讶[bigriverguy]如果你可以取消订阅那么订阅将会如何运作你会仍然可以访问取消订阅时的当前所有内容吗我们是否需要继续订阅才能使用产品。[bigriverguy]有两种订阅方式1在你离开时可以继续使用你离开时的最新版本编译2在你离开后你将无法重新编译程序。似乎TwinBasic将使用#2。这令人难过因为我拒绝使用任何让我继续订阅才能使用的软件。我因为这个原因离开了WinDev开发。我希望TwinBasic是一个替代方案。例如尽管Xojo和Lianja是订阅制的但在你离开时你仍然可以使用你离开时的最新版本的功能。[WaynePhillipsEA]是的你可以在订阅有效期内继续使用当时可用的版本。之后发布的版本将拒绝你的许可证密钥。[阿拉斯加德鲁伊]等等……等等……这是最近才有的变化吗我之前的印象在今年十月左右是取消订阅后IDE/编译器会恢复到社区版[WaynePhillipsEA]不这不是最近的变化。你将失去对未来更新的访问权限即未来的更新将恢复到社区版[fafalone]那这不意味着任何订阅都只是在订阅到期前的版本的永久许可证吗[WaynePhillipsEA]是的基本上是这样但没有官方支持或更新。这与我一直以来的假设有很大的不同。坦率地说我同意bigriverguy的看法即一旦你的订阅到期你将无法使用付费功能如LLVM优化、无启动画面的64位支持等来编译构建。这是一个重要的澄清因为我确信bigriverguy并不是唯一一个“拒绝使用任何将他们锁定在持续订阅中的产品”的开发人员。Discord 聊天摘要*由Claude-Sonnet-4.5自动生成概述本周的综合频道主要由alaskandruid的实践工作推动他将CTGUI/SFML动态链接库绑定移植到twinBASIC围绕进程间通信、UTF-32字符串处理和二进制文件输入输出产生了一系列富有成效的技术讨论。waynephillipsea分享了一篇备受好评的Access DevCon 2026演示文稿介绍了实用的twinBASIC使用案例社区也一起探讨了订阅和许可模式的相关问题。还发现并报告了一个多重继承错误和一个twinpack导出路径的不一致性。访问 DevCon 2026waynephillipsea 分享了 Access MVP Mike Wolfe 在 Access DevCon 2026 上的演讲记录 Practical twinBASIC展示了 Access 开发人员的现实世界 twinBASIC 使用案例幻灯片和项目文件可以在 nolongerset.com/devcon-2026 上找到。该展示引起了社区的强烈积极反应并激发了希望在基于访问的工作流程中应用twinBASIC的成员的兴趣。控制台应用程序 进程间通信alaskandruid在尝试从由外部进程启动的tB控制台应用程序捕获stdout时遇到了运行时错误5fafalone进行了调查并提供了一个概念验证修复方案该方案通过GetConsoleMode检测管道重定向并在检测到管道时用WriteFile替换WriteConsole。deletedewd 提出了 Running Object Table (RegisterActiveObject/GetActiveObject) 作为 tB 和 C# 应用程序之间进程间通信的更清洁的替代方案完全避免了控制台重定向。对于高精度基准测试wqweto 分享了一个TimerEx帮手包装QueryPerformanceCounter和QueryPerformanceFrequency作为内置Timer的更精确替代品。CTGUI/SFML 动态链接库绑定alaskandruid在将CTGUITGUI的C绑定和CSFML DLL API移植到twinBASIC上取得了重大进展fafallone和waynephillipsea在传递UTF-32字符串参数的关键挑战上提供了帮助。fafalone 建议ByVal LongPtr作为初步的解决方法waynephillipsea 提供了更可靠的StrPtr(StrConv(..., vbUnicode))转换使用StringToUTF32/GetMem2/PutMem2来正确处理 UTF-16 代理对 —— 这是 twinBASIC 中遇到的 UTF-32 的第一个实际用例。通过AddressOf函数回调已确认在tguiWidget_signalConnect上可以正常工作 once a separate UTF-32 signal name issue was resolved; alaskandruid plans to publish the completed bindings to GitHub and eventually submit them as a twinpack reference.二进制文件输入输出 UDT 处理alaskandruid在使用Put时遇到意外的记录计数deletedewd解释说LenB报告了UDT的内存字节大小而Len报告了磁盘上的大小——这使得LenB在使用Put/Get进行记录计数时变得不正确。fafalone 强调了Len不LenB在二进制文件输入输出上下文中几乎总是应该与 UDTs 一起使用。错误报告fafalone 发现了一个多重继承的错误当覆盖两个基类共享的方法例如Inherits Cat, Dog时如果调用被覆盖的方法会导致运行时崩溃waynephillipsea 确认这是一个错误。alaskandruid报告了一个双包特定的导出路径问题其中IDE会默默将项目名称附加为子文件夹到配置的导出路径而这种行为在标准EXE项目类型中不会发生已提交错误报告。许可和订阅模式社区成员bigriverguy对取消后的编译访问提出了担忧waynephillipsea解释说twistBASIC 订阅者在订阅有效期内仍然可以完全访问最后一个可用版本后续版本将仅恢复到社区版的功能。fafalone确认在社区版条款下编译器在没有许可证密钥的情况下仍然可以正常工作具有LLVM优化移除了x64启动画面并且未来的跨平台功能将保留给订阅者。发展速度 社区动力社区幽默地指出这一时期发布节奏较慢bclothier观察到这是项目成熟后的自然结果因为每一个增量都带有更大的回归风险和复杂性。waynephillipsea向社区保证很快会有更新并对项目的方向充满信心。结论这是一周积极且技术丰富alaskandruid的CTGUI/SFML工作浮现出几个实用的模式涉及DLL互操作、UTF-32编码和二进制文件I/O这些将对更广泛的社区有益。2026年Access DevCon的演示文稿和对订阅条款的明确回答有助于增强twinBASIC作为VB6/VBA开发人员长期平台的可信度。随着队列中确认的多重继承错误和即将到来的更新该项目继续朝着完美的v1发布迈进。网络周围区带剥离器 Shell 扩展更新文件夹支持回到2024年11月fafalone发布了他的ZoneStripper右键Windows资源管理器菜单工具用于从文件中移除网页标记这为资源管理器添加了一个右键菜单选项以删除“网页标记”——告诉Windows和Office文件“来自互联网”的 Zone.Identifier 替代数据流。这是我对之前制作的完整程序的补充链接在readme中。GitHub - fafalone/ZoneStripperExt: 区域条纹扩展程序区带剥离器 Shell 扩展。在 GitHub 上创建一个帐户来为 fafalone/ZoneStripperExt 贡献。编辑GitHub法法龙本周他发布了一个更新除了支持文件外还支持文件夹更新菜单项没有显示在文件夹中评论指出这将被支持。这只是与.reg文件有关的问题我原以为*的条目会包括文件夹但事实并非如此。注册表文件现在为文件夹有一个额外的条目。你不需要重建DLL只需合并更新的.reg文件如果你愿意重建也会做到这一点。我已经测试了从选定文件夹中的项目中删除标识符的功能。访问项目库以获取更新的.reg文件。更新日志以下是过去一周的更新。您也可以通过访问GitHub twinBASIC Releases页面来获取此信息。