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 了。

……

浏览器摸鱼扩展:Loafishing

上班摸鱼浏览网页时,最尴尬的场面莫过于领导同事路过你背后看见沾满整个屏幕的 NSFW 内容。特别是国内的一些 2B 编辑,恨不得为文章里的每行字都配上一副屁都搭不上界的尬/梗图。如果在浏览器设置中关闭图片显示,又会导致想要浏览的图片也看不到了,严重影响摸鱼的效率。

一种理想的摸鱼浏览模式应该是这样的:网页中所有的图像、视频全部加上透明度滤镜,以坐在屏幕前的自己能够隐约看见内容,而离开屏幕一定距离的同事或摄像头完全看不清为最佳状态。当我们想看清图像内容的时候只要把鼠标移上去,就能恢复正常显示。另一种模式是:在网页中浮动或者弹出一个「画中画」窗口,鼠标指向的图像将在其中正常显示。

……

允许微软应用商店使用本地代理

UWP 应用默认不允许访问本地 localhost 地址。微软应用商店也属于 UWP 应用,如果 Windows 开启了系统代理,且代理服务器是地址是 localhost 的话,微软应用商店就无法联网。而每次启动微软应用商店就要关闭系统代理会非常麻烦。

通过下面的命令可以允许微软应用商店访问本地代理:

……

CentOS 7 部署简易 HTTP 代理

需要在一台 CentOS 7 系统的小型 VPS 上安装 HTTP 代理。评估了各种方案,最终选择了 Xray。它占用资源最少,安装配置也最简单。

……

Svelte 前端开发笔记

近期用 Svelte 开发了一个小项目,记录在开发过程中遇到的一些问题。

……