
轻松区分中文输入法和英文大写、英文小写状态
什么是输入法状态?
输入法状态指的是你当前使用的输入法类型和模式。常见的输入法状态包括:
- 中文输入法:用来输入中文字符,如拼音输入法、五笔输入法等。
- 英文输入法:用于输入英文字符或数字,通常是键盘上的直接输入模式。
- 大写和小写状态:在英文输入模式下,通常可以切换大写(Caps Lock)和小写状态。
为什么要显示输入法状态?
显示输入法状态能够帮助用户清楚地知道自己当前的输入方式。例如,当用户在输入中文时,知道自己处于拼音模式,或者知道输入是否处于大写字母状态,避免错误输入。
光标和光标图标
什么是光标?
光标(或光标指针)是显示在计算机屏幕上的一个标记,用于指示当前用户可以输入的文本位置。它通常是一个闪烁的竖线或条形,位于你想要插入文本的位置。
如何通过光标显示输入状态?
光标不仅仅表示文本插入位置,它的形态也可以用来表示输入状态。例如:
- 改变光标的形态:可以通过修改光标的图标(比如,光标图标变为“中文输入”图标或“英文输入”图标)来指示当前的输入状态。
- 通过光标颜色或形状的变化:有些脚本或程序通过修改光标颜色或形状来区分不同的输入法状态。例如,当用户在中文输入法下时,光标可能变为一个汉字输入指示符,显示英文输入时,光标可能变为一个标准的文本输入指针。
包含光标图标文件打包下载:
代码示例:
; 方便区分中文输入法和英文大写、英文小写状态
#NoEnv
SetBatchLines -1
SetWorkingDir %A_ScriptDir%
SetTimer 中文光标判断, 200
Return
; 光标指针文件显示效果可自行修改
中文光标判断:
if !GetKeyState("CapsLock", "T")
if (IME_GET()!=光标状态缓存)
if IME_GET()
DllCall("SystemParametersInfo", "Uint", SPI_SETCURSORS := 0x57, "Uint", 0, "Ptr", 0, "Uint", 0)
, 光标状态缓存=1
else
英文光标 := DllCall( "LoadCursorFromFile", "Str", "C:\Windows\Cursors\beam_r.cur") ; beam_i.cur为黑色边缘
, DllCall("SetSystemCursor", "Uint", 英文光标, "Int", 32513)
, 光标状态缓存=0
; TaskBar_SetAttr() ; 托盘任务栏透明
Return
; 按CapsLock大小写时,鼠标光标同步切换来提示状态
CapsLock::
SetCapsLockState % !GetKeyState("CapsLock", "T")
if GetKeyState("CapsLock", "T")
大写光标 := DllCall( "LoadCursorFromFile", "Str", A_ScriptDir "\小写光标beam_i.cur")
, DllCall("SetSystemCursor", "Uint", 大写光标, "Int", 32513)
else
if IME_GET()
DllCall("SystemParametersInfo", "Uint", SPI_SETCURSORS := 0x57, "Uint", 0, "Ptr", 0, "Uint", 0)
else
英文光标 := DllCall( "LoadCursorFromFile", "Str", "C:\Windows\Cursors\beam_r.cur") ; beam_i.cur为黑色边缘
, DllCall("SetSystemCursor", "Uint", 英文光标, "Int", 32513)
KeyWait CapsLock
Return
; 输入法状态判断
IME_GET() {
DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", "Uint", WinActive("A"), "Uint")
DetectHiddenWindows % ("On", DHW:=A_DetectHiddenWindows)
SendMessage 0x283, 0x005, 0,, ahk_id %DefaultIMEWnd%
DetectHiddenWindows %DHW%
Return ErrorLevel
}
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(2)
问问大佬能否做到中文输入法下的中英文输入状态检测?
这个就是区分中文输入法下的不同状态,我是默认用的搜狗做主输入法,其它输入法的情况我不懂