You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于winuser.h中SendMessage函数最后两个参数的技术疑问

控制台窗口全屏代码中SendMessage参数解析

先看你用到的代码:

void FullScreen()
{
    system("mode con COLS=700"); 
    SendMessage(GetConsoleWindow(), WM_SYSKEYDOWN, VK_RETURN, 0x20000000); 
} 

下面拆解最后两个参数的作用:

1. wParam:VK_RETURN

这个参数指定的是触发系统操作的虚拟键码。控制台窗口原生支持Alt+Enter快捷键切换全屏/窗口模式,这里的VK_RETURN对应回车键,配合后面lParam里的Alt键标记,相当于模拟按下了Alt+Enter组合键,以此触发系统级的全屏切换逻辑。

2. lParam:0x20000000

lParam是一个32位复合参数,每一位对应按键消息的不同属性,这里的0x20000000只用到了一个关键位:

  • 二进制第29位(从0开始计数)设为1,这个位专门用来标记Alt键处于按下状态。
  • 其他位设为0即可,因为我们只需要告诉系统“这是Alt+Enter的按键消息”,不需要额外的按键扫描码、重复次数等冗余信息。

另外补充:前面的system("mode con COLS=700")是先把控制台列数强制拉到很大,让窗口先被拉伸,之后再发送全屏消息能更稳定地触发全屏效果,避免原窗口尺寸太小导致切换不彻底。

内容的提问来源于stack exchange,提问作者Andrei Voicea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:40:33