2011-12-31 2 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

Я предполагаю, что, поскольку вы отметили свой вопрос как WinAPI, вы пытаетесь перехватить нажатия клавиш из другого приложения, как в клавиатуре Hooking. Посмотрите на эти ссылки:

+0

Это именно то, что я пытаюсь сделать. Я пытаюсь перехватить их, а затем вернуть что-то еще в одно приложение/контроль. Спасибо за руководство! – gumenimeda

2

Если вы просто хотите эмулировать клавиатуру деятельности, вы можете использовать keybd_event или SendInput. Они автоматически доставляют нажатия клавиш в окно с фокусом, поэтому вам не нужно его обнаруживать самостоятельно.

Смежные вопросы