获取用户键入的输入字符(WINAPI, user32.dll)

本文关键字:WINAPI user32 dll 字符 用户 输入 获取 | 更新日期: 2023-09-27 18:19:11

我需要得到一个输入点(插入符号位置,窗口/控件)的焦点。我的应用程序/服务需要检测用户何时开始输入,然后用预定的值替换输入的字符。诀窍是我不知道用户想要在哪里输入(我不想把它限制在几个应用程序中)。

我想我知道如何获取/替换文本使用:

[DllImport("USER32.DLL", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wparam, StringBuilder text);

如何获得焦点控件?我怎么知道从哪里得到文本和哪里发送替代?

我在c#, WPF中做这个。

谢谢!

获取用户键入的输入字符(WINAPI, user32.dll)

如果您只是想模拟键盘活动,您可以使用keybd_eventSendInput。这些会自动将按键传递到有焦点的窗口,因此您不必自己检测它。

我假设,因为你已经标记你的问题为WinAPI,你正试图从另一个应用程序拦截击键,如在键盘挂钩。看看这些链接:

  • 拦截和阻止击键
  • 如何在c#中设置低级鼠标钩子和键盘钩子?如何在Visual c# .NET中设置Windows钩子一个简单的c#全局低级键盘钩子