A_Cursor获取鼠标光标类型判断当前状态,例如判断是否为输入状态 ,例子输入法状态提示

A_Cursor:当前显示的鼠标光标类型. 其值为下列单词的其中一个: AppStarting, Arrow, Cross, Help, IBeam, Icon, No, Size, SizeAll, SizeNESW, SizeNS, SizeNWSE, SizeWE, UpArrow, Wait, Unknown. 与 size 指针类型一起的首字母表示方向, 例如 NESW = NorthEast+SouthWest. 手型指针 (点击和抓取) 属于 Unknown 类别.

原型

A_Cursor:当前显示的鼠标光标类型. 其值为下列单词的其中一个: AppStarting, Arrow, Cross, Help, IBeam, Icon, No, Size, SizeAll, SizeNESW, SizeNS, SizeNWSE, SizeWE, UpArrow, Wait, Unknown. 与 size 指针类型一起的首字母表示方向, 例如 NESW = NorthEast+SouthWest. 手型指针 (点击和抓取) 属于 Unknown 类别.

A_Cursor是一个内置变量,不知道大家的理解能力,我看了帮助文档中的解释,我是没有太理解,这些光标类型具体指的是什么类型呢?

深入研究

下面我详细研究了一下,分享给大家!

  • APPSTARTING 标准的箭头和小沙漏
  • ARROW 标准的箭头
  • CROSS 十字光标
  • HAND Windows 98/Me, Windows 2000/XP: Hand
  • HELP 标准的箭头和问号
  • IBEAM 工字光标
  • ICON Obsolete for applications marked version 4.0 or later.
  • NO 禁止圈
  • SIZE Obsolete for applications marked version 4.0 or later.
  • SIZEALL 四向箭头指向东、西、南、北
  • SIZENESW 双箭头指向东北和西南
  • SIZENS 双箭头指向南北
  • SIZENWSE 双箭头指向西北和东南
  • SIZEWE 双箭头指向东西
  • UPARROW 垂直箭头
  • WAIT 沙漏,Windows7系统下会显示为选择的圆圈表示等待
  • Unknown未知

使用方法

其实使用起来还是蛮简单的

MsgBox,% A_Cursor

内置变量只允许取值,不允许赋值,如果想要赋值,需要调用系统函数LoadCursor实现!具体的这里就不详细介绍了!有兴趣的可以自行搜索一下!

 

以下内容来自https://blog.csdn.net/liuyukuan/article/details/82291632

下面给出一个应用的实例
;功能:输入法状态提示
;环境:win10+搜狗输入法,输入法状态切换用默认的shift键。
;作者:sunwind
;时间:2018年9月1日
;更新链接:https://blog.csdn.net/liuyukuan/article/details/82291632
 
~Shift::
ToolTip
If (IME_GET()=1)
	ToolTip,EN  ;shift得反着提示,提示切换后的状态。
else
	ToolTip,中
return
 
~LButton::
If  (A_Cursor = "IBeam" ) {
	Edit_Mode := 1
} else if(A_Cursor = "Arrow" ) {
   Edit_Mode := 0
} 
 
MouseGetPos, , , WhichWindow, WhichControl
WinGetPos,winx,winy,,,%WhichWindow%
ControlGetPos, x, y, w, h, %WhichControl%, ahk_id %WhichWindow%
;~ ToolTip, %WhichControl%`nX%X%`tY%Y%`nW%W%`t%H%
if ( 0 = not_Edit_InFocus())
{
	If (IME_GET()=1)
		ToolTip,中
	else
		ToolTip, EN
}
return
 
~Shift up::
~Lbutton up::
Sleep,1000
ToolTip
return
 
not_Edit_InFocus(){
Global Edit_Mode
ControlGetFocus theFocus, A ; 取得目前活動窗口 的焦點之控件标识符
return  !(inStr(theFocus , "Edit") or  (theFocus = "Scintilla1")   ;把查到是文字編輯卻不含Edit名的theFucus加進來
or (theFocus ="DirectUIHWND1") or  (Edit_Mode = 1))
}
 
IME_GET(WinTitle="")
;-----------------------------------------------------------
; IMEの状態の取得
;    対象: AHK v1.0.34以降
;   WinTitle : 対象Window (省略時:アクティブウィンドウ)
;   戻り値  1:ON 0:OFF
;-----------------------------------------------------------
{
    ifEqual WinTitle,,  SetEnv,WinTitle,A
    WinGet,hWnd,ID,%WinTitle%
    DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)
 
    ;Message : WM_IME_CONTROL  wParam:IMC_GETOPENSTATUS
    DetectSave := A_DetectHiddenWindows
    DetectHiddenWindows,ON
    SendMessage 0x283, 0x005,0,,ahk_id %DefaultIMEWnd%
    DetectHiddenWindows,%DetectSave%
    Return ErrorLevel
}

 

给TA捐赠
共{{data.count}}人
人已捐赠
AHKV1

AHK实现在任务栏上滚动鼠标来调节音量

2018-1-5 16:30:26

AHKV1学习

2的指数的三种乘除运算方式速度测试

2018-1-6 14:33:21

5 条回复 A文章作者 M管理员
  1. AsahiGould

    感谢分享

  2. 橡树

    谢谢河老师

  3. 东亚强夫

    如果是单击shift英文,双击中文就好了

    • q631263135

      我之前写过这个,找不到了,但核心的代码我还有,现在是左shift 英文,右shift 中文。

      ===搜狗输入法切换,利用输入法自己的热键特点,输入法管理只保留搜狗输入法,默认英文状态===
      ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

      ; 左Shift强制切换到英文输入法,右Shift强制切换到中文输入法
      #Include %A_ScriptDir%
      timeInterval := 200

      #IfWinNotActive ahk_exe mstsc.exe
      ; 英文模式
      ~$LShift::

      return
      ~$LShift up::
      if (A_TimeSincePriorHotkey < timeInterval && A_Priorkey = "LShift") {

      if ( GetKeyState("CapsLock", "T") ) {
      SetCapsLockState, Off
      }

      if ( WinExist("ahk_class SoPY_Comp") ) {
      SendInput {Enter}
      }

      SendInput ^,

      SendInput ^{Space}
      }

      return

      ; 切换到搜狗输入法,设置中文模式
      ~$RShift::
      return
      ~$RShift up::

      if ( A_TimeSincePriorHotkey < timeInterval && A_Priorkey = "RShift" ) {
      if ( GetKeyState("CapsLock", "T") ) {
      SetCapsLockState, Off
      }

      SendInput ^,

      SendInput ^{Space}

      Sleep 50

      SendInput ^{Space}

      SendInput ^,
      }

      return

      /*
      ; 锁定大写
      ~$CapsLock::
      SetCapsLockState, On
      return
      */
      #IfWinNotActive ahk_exe mstsc.exe

  4. 感谢经历ق☀️

    如果我的鼠标是正常模式,但也是在编辑状态,就没提示了

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索