windows - Windows 上的 SIGWINCH 等效项?

标签 windows signals command-line-interface

这很可能是另一个愚蠢的问题,但我似乎找不到答案(或任何与此相关的答案),所以这里开始吧。

我有一个在 Linux 上使用 SIGWINCH 来检测窗口大小变化的命令行程序,显然我有一个用户在 Windows 上使用该程序。问题是该程序使用 SIGWINCH 来检测窗口大小的变化,而 Windows 不支持此信号。我已经尝试使用谷歌搜索我能想到的每种搜索词组合,但由于 SIGWINCH 与窗口大小变化之间的关系,我无法找到任何有用的结果。我正在寻找 Windows 等效方法,或者最常用于检测 Windows 计算机上窗口大小变化的方法。

如何检测 Windows 上窗口大小的变化?

最佳答案

因为我认为您不能子类化控制台窗口(因此捕获 WM_SIZE 消息),您可能只需要轮询 GetConsoleScreenBufferInfo .

编辑:经进一步调查(未测试!),无需使用 ReadConsoleInput 进行轮询也可能可行.总结:调用SetConsoleMode打开窗口输入事件。从另一个线程,等待 console input handle使用 WaitForSingleObject 或类似函数发出信号。读取所有未决的控制台事件;窗口缓冲区大小事件的存在意味着调整了控制台窗口的大小。

关于windows - Windows 上的 SIGWINCH 等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10856926/

相关文章:

windows - 通过批量创建新文件而不覆盖旧文件

python - 通过 Windows 控制台使用 Docker : includes invalid characters $PWD for a local volume name

c - 如何让Ctrl-c结束程序

python - 为什么我不能跳出这个 itertools 无限循环?

javascript - 我们可以从命令行从 flash 导出到 createjs 吗?

mongodb - AWS CLI 的细微差别

windows - Cassandra - "The system cannot find the file specified"

c - 使用 ShellExecuteEx 在已启动的实例中调用 iexplore.exe

c++ - Qt 插槽未被调用

php - 在 PHP CLI 解释器中重新定义 PHP 函数