ahk1.1获取输入光标当前位置坐标(不是鼠标的位置)

这段代码主要用于获取当前激活窗口中光标的精确位置,特别是在网页输入时。它使用了oleacc库来访问系统的无障碍对象,从而得到光标(X,Y)坐标。如果oleacc库不可用,代码会退化为使用MouseGetPos函数获取鼠标位置作为光标位置。
摘要由CSDN通过智能技术生成

F1 Up::

    Caret:=GetCaretPos(1), hasCaretPos:=1

    x坐标 := Caret.x

    y坐标 := Caret.y

    ToolTip, %x坐标% %y坐标%

Return



; 获取光标坐标

GetCaretPos(Byacc:=1){

    Static init

    If (A_CaretX=""){

        Caretx:=Carety:=CaretH:=CaretW:=0

        If (Byacc){

            If (!init)

                init:=DllCall("LoadLibrary","Str","oleacc","Ptr")

            VarSetCapacity(IID,16), idObject:=OBJID_CARET:=0xFFFFFFF8

            , NumPut(idObject==0xFFFFFFF0?0x0000000000020400:0x11CF3C3D618736E0, IID, "Int64")

            , NumPut(idObject==0xFFFFFFF0?0x46000000000000C0:0x719B3800AA000C81, IID, 8, "Int64")

            If (DllCall("oleacc\AccessibleObjectFromWindow", "Ptr",Hwnd:=WinExist("A"), "UInt",idObject, "Ptr",&IID, "Ptr*",pacc)=0){

                Acc:=ComObject(9,pacc,1), ObjAddRef(pacc)

                Try Acc.accLocation(ComObj(0x4003,&x:=0), ComObj(0x4003,&y:=0), ComObj(0x4003,&w:=0), ComObj(0x4003,&h:=0), ChildId:=0)

                , CaretX:=NumGet(x,0,"int"), CaretY:=NumGet(y,0,"int"), CaretH:=NumGet(h,0,"int")

            }

        }

        If (Caretx=0&&Carety=0){

            MouseGetPos, x, y

            Return {x:x,y:y,h:30,t:"Mouse",Hwnd:Hwnd}

        } Else

            Return {x:Caretx,y:Carety,h:Max(Careth,30),t:"Acc",Hwnd:Hwnd}

    } Else

        Return {x:A_CaretX,y:A_CaretY,h:30,t:"Caret",Hwnd:Hwnd}

}

可以获取网页中输入光标的位置

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 您可以使用以下Autohotkey脚本来实现模拟鼠标滚动后点击当前选中的项目: ``` WheelUp:: Send {WheelUp} Sleep, 50 Click Return WheelDown:: Send {WheelDown} Sleep, 50 Click Return ``` 在上面的脚本中,我们将滚轮向上滚动映射到了WheelUp键,滚轮向下滚动映射到了WheelDown键。在每次滚动后,我们使用Sleep命令等待50毫秒,以确保鼠标滚动完成后再执行Click命令。 将此脚本保存为.ahk文件,并双击运行,即可在模拟鼠标滚动后点击当前选中的项目。 ### 回答2: 使用Autohotkey模拟鼠标滚动并点击当前选中的item,可以按以下步骤进行操作: 1. 首先,你需要在Autohotkey脚本中定义一个热键触发该操作。例如,你可以将F1键作为触发键,将下面的代码放入脚本中: ``` F1:: ``` 2. 接下来,你需要使用Autohotkey的鼠标滚动命令来模拟滚动,以滚动到下一个item。你可以使用`WheelUp`命令向上滚动,或使用`WheelDown`命令向下滚动。假设你需要向下滚动到下一个item,你可以使用以下代码: ``` SendInput, {WheelDown} ``` 3.为了点击当前选中的item,你需要使用Autohotkey的鼠标点击命令。你可以使用`Click`命令来模拟鼠标点击。以下是一个示例代码: ``` Click ``` 4. 最后,你需要在热键定义结尾处加上`return`,以结束该热键的定义。你的完整代码如下: ``` F1:: SendInput, {WheelDown} Click return ``` 当你按下F1键时,脚本就会自动滚动鼠标并点击当前选中的item。你可以通过修改热键和滚动命令来符合你的需求。记住,这只是一个简单的示例,你可以根据实际情况进行更改或扩展。 ### 回答3: 在Autohotkey中,可以通过模拟鼠标滚动来滚动页面或应用程序的内容,然后通过模拟鼠标点击来点击当前选中的item。 首先,我们可以使用鼠标滚轮命令`WheelUp`或`WheelDown`来模拟鼠标滚动。这些命令可以在当前鼠标所在位置进行滚动。例如,`WheelUp`可以向上滚动一定的距离,`WheelDown`可以向下滚动一定的距离。 然后,我们可以使用鼠标点击命令`Click`来模拟鼠标点击。可以使用`Click`命令的`Left`参数来模拟左键点击。可以使用`Click`命令的`x,y`参数来指定点击的位置。 为了点击当前选中的item,我们需要首先模拟鼠标滚动,然后在滚动后的位置模拟鼠标点击。 以下是一个示例代码: ```autohotkey ; 模拟鼠标滚动 Send {WheelDown} ; 延迟一定时间,等待滚动完成 Sleep 1000 ; 获取当前鼠标位置 MouseGetPos, mouseX, mouseY ; 模拟鼠标点击 Click, %mouseX%, %mouseY%, Left ; 可以根据需要设置适当的延迟来等待点击动作完成 Sleep 1000 ``` 上述代码首先发送`WheelDown`命令来进行向下滚动。然后等待一定时间等滚动完成。接下来,使用`MouseGetPos`命令获取当前鼠标位置。最后,使用`Click`命令在获取位置模拟鼠标左键点击。 请注意,以上代码仅为示例,你可以根据实际需要进行调整。另外,你也可以使用其他Autohotkey提供的命令和函数来更精确地模拟鼠标滚动和点击操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nanj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值