Получить вводимые пользователем символы (WINAPI, user32.dll) - PullRequest
0 голосов
/ 31 декабря 2011

Мне нужно получить точку ввода (положение каретки, окно / элемент управления), которая сфокусирована. Моему приложению / службе необходимо определить, когда пользователь начинает печатать, а затем заменить введенные символы заранее заданными значениями. Хитрость в том, что я не знаю, куда пользователь хочет набирать текст (я не хочу ограничивать это несколькими приложениями).

Я думаю, что я знаю, как получить / заменить текст, используя:

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

Как мне получить фокусировку? Как узнать откуда взять текст и куда отправить замену?

Я делаю это в C #, WPF.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 31 декабря 2011

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

1 голос
/ 31 декабря 2011

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

...