2011-12-31 13 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プロパティを照会します。 –

答えて

1

キーボードHookingのように別のアプリケーションからのキーストロークを傍受しようとしているWinAPIとしてあなたの質問にタグ付けしているので、私は推測しています。これらのリンクを見てみましょう:

+0

私はまさに私がやろうとしていることです。私はそれらを傍受し、同じアプリケーション/コントロールに何かを返そうとしています。ガイダンスをありがとう! – gumenimeda

2

あなただけのキーボード操作をエミュレートする場合は、keybd_eventSendInputを使用することができます。これらは自動的にフォーカスを持ったウィンドウにキーを送ります。したがって、自分でそれを検出する必要はありません。

関連する問題