2011-12-31 94 views
0

我需要得到集中的输入点(尖位置,窗口/控件)。我的应用程序/服务需要检测用户何时开始键入,然后替换输入了预定值的字符。诀窍是我不知道用户想要输入的位置(我不想将其限制为几个应用程序)。获取用户(WINAPI,user32.dll中)键入的字符输入

我想我知道如何获得/使用替换的文字:

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

如何获取集中控制?我如何知道从哪里获得文本以及在哪里发送替换?

我在C#中这样做,WPF。

谢谢!

+1

过得好击键?如果您使用的是事件处理程序,则RoutedEventArgs具有名为“OriginalSource”的属性。在由父类进行任何可能的源调整之前,此属性将获得由纯命中测试确定的原始报告源。这将指示最终用户将文本输入到哪个控件。然后,您将查询此控件的Text属性。 – 2011-12-31 02:28:01

回答

1

我假设,既然您已为问题为WINAPI你正在试图拦截从另一个应用程序按键在键盘Hooking。看看这些链接:

+0

那正是我想要做的。我试图拦截它们,然后将其他内容返回给相同的应用程序/控件。感谢您的指导! – gumenimeda 2011-12-31 15:29:38

2

如果你只是想模仿键盘活动,你可以使用keybd_eventSendInput。这些按键会自动将按键传送到焦点窗口,因此您无需自己检测。