2011-12-31 72 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。這些按鍵會自動將按鍵傳送到焦點窗口,因此您無需自己檢測。