轻松区分中文输入法和英文大写、英文小写状态

包含光标图标文件打包下载:

; 方便区分中文输入法和英文大写、英文小写状态
#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
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。