我正在C#中使用通用文本自动完成程序应用程序。所以我需要在当前活动窗口中获取插入位置(可能是Notepad,Ms Word等)。我该怎么做才能得到插入符号的X,Y坐标?我需要它在用户输入时在光标(插入符号)下显示建议。
我的程序在后台运行。它应该在当前活动的任何窗口中检测到插入符的存在并获得插入符号的实时位置。只要用户输入文本,位置值就会更新。
我不知道怎么做这些。这一切都可以使用C#吗?或者我应该更改编程语言吗?
答案 0 :(得分:0)
语言选择在很大程度上与此问题无关。文本输入本身很难。
解决您的问题将很困难,因为应用程序通常使用自定义或高度自定义的控件来编辑文本。记事本使用标准的编辑控件,因此您可以使用EM_GETSEL消息来检索字符中的插入位置,并使用EM_POSFROMCHAR将其转换为屏幕位置。标准Rich Edit控件存在类似的消息。但是,使用Microsoft Word,您可能必须使用COM调用它并找出插入位置。其他应用程序将具有其他API,您必须进行研究,逆向工程,支持和测试。这只是一个开始 - 我希望你会想要检索插入符号周围的文本并修改它,和/或显示一个UI来为用户提供选择。这将是一个主要的PITA,所以我会研究IME API,看看有没有合适的东西。应该有,因为东亚输入模式本身就是一种自动完成。 IME的优势在于它不依赖于目标控制。