使用AutoHotkey调用SendMessage时如何获取MCM_SETCURSEL消息对应数值
系统控件消息数值获取方法及MCM_SETCURSEL数值说明
通用获取规则
所有Windows标准控件的消息数值都定义在微软Windows SDK的C/C++头文件中,月历控件相关的MCM_前缀消息全部定义在CommCtrl.h头文件里,这类标准消息的数值自Windows首个版本发布后就保持固定,不会随系统版本更新变动,可直接固化到代码中使用。
MCM_SETCURSEL的具体数值
月历控件消息的基准值为MCM_FIRST = 0x1000(与WM_USER常量值一致),MCM_SETCURSEL的宏定义为MCM_FIRST + 0x0002,因此最终数值为:
- 十六进制:
0x1002 - 十进制:
4098
AutoHotkey调用示例
你可以直接在AHK脚本中使用该数值发送消息,注意如果是向外部进程的日历控件发送消息,需要先在目标进程内存空间中写入SYSTEMTIME结构,再将对应内存地址作为lParam参数传入:
; AHK v1 调用示例(已提前获取目标日历控件的hwnd存到calHwnd变量中) ; 此处省略在目标进程申请内存、写入SYSTEMTIME结构的逻辑 SendMessage, 0x1002, 0, 目标进程内SYSTEMTIME结构的内存地址, % calHwnd
其他同类消息的查询方法
遇到其他通用控件消息时,可按照如下规则自行计算:
- 常见控件消息基准值:
- 按钮控件BM_FIRST = 0x00F0
- 编辑框控件EM_FIRST = 0x0050
- 列表视图控件LVM_FIRST = 0x1000
- 树视图控件TVM_FIRST = 0x1100
- 对应消息的偏移量可直接从控件消息官方定义说明中获取,基准值加偏移量就是最终的消息数值。
内容的提问来源于stack exchange,提问作者Gilles Gruwez
相关产品推荐
相关产品推荐

