Zone.Identifier 文件和 NTFS 数据流

使用 Windows 资源管理器,将 Windows 中的文件复制到 WSL 文件系统中时发现,目标路径下会多出一个 Zone.Identifier 后缀的文件:

foo.txt
foo.txt:Zone.Identifier

……

轻量级 IDE:Lite XL

Lite XL 是一款使用 C 和 Lua 开发的开源文本编辑器。它的官网简介为:

A simple, fast, feature-filled and extremely extensible text editor written in C and Lua, adapted from lite.

它的 Windows 安装包大小仅为 2MB。在不加载插件的情况下,启动后占用内存只有 20MB 多。和 VSCode 动则几百 MB 的内存使用量相比,的确算得上轻量。虽然官方的自我定位是一款文本编辑器,不过在安装插件后可以作为一个简单的 IDE 使用。其生态位和 Sublime 类似,可以作为主力 IDE 的备胎。

本文仅介绍 Lite XL 在 Windows 平台上的安装和使用。

……

如何判断一个窗口句柄是否为桌面顶层窗口

在微软官方文档中,并没有提供一个 API 用于判断一个窗口句柄是否为桌面的顶层窗口。通过类似 NULL == GetParent(hwnd) 或者 hwnd == GetAncestor(hWnd,GA_ROOT) 等简单代码都无法做出正确判断。经过测试,找到两种靠谱的解决方案。

……

Free Pascal 平台无关的原生数据类型

可能是历史原因,Free Pascal 编程环境中的数据类型数量浩瀚如繁星,其中又有很多类型是运行时定义的别名。为了去繁从简,本文整理了 Free Pascal 编译器支持的平台无关且和其他语言二进制兼容的原生数据类型。

……

Windows API 编程之调整菜单宽度

好多年没碰 Windows API 编程了,这次写 Traymond 才发现:堂堂 Windows 竟然没有一个 API 能够用来调整菜单的宽度。

通常,在程序中使用的静态菜单都是直接从资源中载入的,而这次需要动态增删菜单项目。这时我才发现一个问题:当用 InsertMenuItem() 函数插入一个菜单项时,Windows 会根据菜单项文本自动增加菜单宽度;但是当使用 DeleteMenu() 函数删除菜单项后,Windows 却无法根据剩余的菜单项文本自动缩小菜单宽度。搜遍全网,也只找到两种解决方法。

……

使用 Windows API 将图标转换成位图

在不依赖任何第三方库、仅使用 Windows API 的前提下,需要将窗口图标(HICON)转换成作为菜单图标的位图(HBITMAP)。

……

增强版 Traymond 让任意窗口最小化到系统托盘

Traymond 是一款 Windows 上的小工具,可以将任意窗口最小化为系统托盘图标,双击图标即可还原窗口。软件启动后会在后台运行,按下热键 Win + Shift + Z 后,当前窗口会最小化到系统托盘图标,双击图标可以恢复窗口。软件正常退出时会自动恢复期间最小化的窗口。另外,如果程序意外终止,重新启动程序,最小化窗口的都会恢复。

……

跨平台虚拟加密磁盘软件 VeraCrypt

VeraCrypt 是一个跨平台开源磁盘加密软件,支持 Windows、macOS 和 Linux。它是已经停止开发的加密软件 TrueCrypt 的继承者。和 Windows 的 BitLocker 相比,VeraCrypt 使用起来更加简单,数据迁移也更加方便。

VeraCrypt 的主要功能有:

……

午餐外卖神秘消失事件

这是一个秋高气爽的午后,当我从摸鱼中回过神来时,已经错过了午餐时间。我拿起手机,慵懒地倚靠在办公椅中,一边划动着屏幕,一边思考接下来午餐该吃什么……

错过用餐时间并不是失误,而是有意为之。错峰用餐的好处有很多——比如出餐时间会更快;骑手不赶时间,有时会将外卖送上楼而不是放在楼下取餐柜,免去下楼取餐的麻烦;另外午餐吃得晚,下午也不容易饿。

……

升级 VirtualBox 后 Vagrant 无法启动

最新发布的 Vagrant v2.4.2 已经支持 VirtualBox 7.1 了。

近期将本地安装的 VirtualBox 升级到 7.1 版本,昨天启动开发环境时时发现 Vagrant 2.4.1 不支持 VirtualBox 7.1,错误提示如下:

The provider 'virtualbox' that was requested to back the machine
'xxxxyyyyyzzzz' is reporting that it isn't usable on this system. The
reason is shown below:

Vagrant has detected that you have a version of VirtualBox installed
that is not supported by this version of Vagrant. Please install one of
the supported versions listed below to use Vagrant:

4.0, 4.1, 4.2, 4.3, 5.0, 5.1, 5.2, 6.0, 6.1, 7.0

A Vagrant update may also be available that adds support for the version
you specified. Please check www.vagrantup.com/downloads.html to download
the latest version.

看起来 Vagrant 2.4.1 最高支持到 7.0 版本的 VirtualBox。如果要等 Vagrant 更新版本还不知道要到猴年马月,将 VirtualBox 退回到 7.0 版本也怕把开发环境弄坏。好在只要稍稍动一下手脚就能让 Vagrant 支持 VirtualBox 7.1 了。

……