输入法如何获得键盘插入符/光标位置?以及如何在C#中做到这一点?

时间:2019-06-10 21:23:14

标签: c# wpf windows winforms winapi

我正在开发一个C#项目,该项目需要获取键盘插入符号/光标位置。

我使用的方法是通过调用Win32 Apis。通过使用此博客:https://www.codeproject.com/Articles/34520/Getting-Caret-Position-Inside-Any-Application

https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-getguithreadinfo

https://docs.microsoft.com/en-us/windows/desktop/api/winuser/ns-winuser-guithreadinfo

NativeMethods.GUITHREADINFO gUITHREADINFO = new NativeMethods.GUITHREADINFO();
gUITHREADINFO.cbSize = (uint)Marshal.SizeOf(gUITHREADINFO);

if (!NativeMethods.GetGUIThreadInfo(0, out gUITHREADINFO))
{
   return new int[] { 0, 0 };
}
[DllImport("user32.dll")]
public static extern bool GetGUIThreadInfo(uint tId, out GUITHREADINFO threadInfo);

但是这种方法有局限性。它不能在基于Chrome和基于Chrome的应用程序中运行,也不能在基于Java的应用程序中运行。

我注意到某些非英语输入法具有跟踪键盘输入光标/插入符号的功能。他们是如何工作的?或者如何在C#中使用Chrome获得键盘插入符号?

0 个答案:

没有答案