Ditto 不能出现在输入光标附近,有什么解决方法吗?

如下图,已设置为“插入符号处理”,是还要设置其它地方吗?我记得之前是正常的,已重装过。


不能出现在什么软件的输入光标处呢?
你试试 系统自带的 记事本 也不行么?

自带的笔记本可以,现在我在火狐浏览器上就不行,这还挑软件? :joy:

挑软件的,现代软件基本上都不标准,光标位置需要通过其他方法获取,用Windows的默认方案获取不到

好吧 :melting_face:

话虽这么说,但还是有能适配绝大多数软件的东西:输入法。基本上光标的位置都能获取到,所以我觉得应该还是有什么方法的吧(难道是一个个程序去适配吗)。

如何获取Windows各类软件的“插入/输入光标【caret】”的x、y坐标? - 问题求助 - 小众软件官方论坛 (appinn.net)

我也想知道

确实,windows 11 自带的剪贴板就可以做到出现在那附近

这段ahk代码是可以适配相当一部分软件的。比如 edge、firefox浏览器,还有一些编辑器,但是没有输入法适配范围那么广。

比如 苍月浏览器 输入法就能适配,这段代码就handle不了

我对这个已经放弃了,ditto、copyq、clibor这几个软件当中,ditto对光标的捕捉还算比较好的,但也常常不成功。我现在已经改成单击选择历史条目后手动复制到光标,其实也没多耽误事…

难道不是选这个嘛?

这个是鼠标在屏幕上的位置,不是输入文字的位置

我能想到的比较简单但是最有效的方法是:

通过ahk代码,每次调出ditto之前,先假装打一个字,然后跳出来了输入法的候选栏,获取输入法候选栏的坐标,再把ditto显示在这个坐标。

我做了个搜狗输入法的版本,效果和代码如下,只要搜狗输入法能显示准确的地方,用了这段代码,ditto就能显示准确

(其他输入法同理,修改ahk_class SoPY_Comp为对应的输入法窗口名就行。不过系统自带的微软输入法不太行,没有窗口名字、进程名还总变,只能每次开机时手动获取一次,太麻烦。):

6

666

哈哈,我实际操作了一下,代码有问题,不能用WinActivate,会丢失输入窗口,我再改一下。

改了一下,这下能用了

需要给ditto增加一个快捷键用来中介
image

#Persistent
#SingleInstance Force
DetectHiddenWindows, On

#IfWinNotActive ahk_class Notepad

$!`::
{
sendinput,v
sleep,200
WinGetPos , X, Y, , , ahk_class SoPY_Comp
send,{backspace}
send,!+1
WinMove,ahk_class QPasteClass, , X, Y
return
}
1 Like

谷歌了下,发现貌似有实现的方法 How to get caret position in ANY application from C#? - Microsoft Q&A