Для направленной отправки нажатий клавиш SendInput является родным методом выбора, хотя он подвергается проверкам UIPI (уровня целостности) в Vista / 2008 / W7. Вы не можете отправлять нажатия клавиш в приложение, у которого есть IL> ваш.
Более общим решением для захвата и перенаправления ввода является глобальная клавиатурная ловушка (см. Справку для SetWindowsHookEx). Но это довольно сложная вещь: вам приходится справляться с тем, как вы отправляете нажатия клавиш, вы влияете на каждый процесс в системе, потому что ваш код эффективно вставляется во входной поток, он включает в себя написание нативной библиотеки DLL ... вы должны знать, именно то, что вы делаете.
Мы используем глобальную клавиатуру в нашей системе (я ее написал), но мы являемся особым случаем - системой обработки экстренных вызовов с одной функцией. Я бы не советовал использовать глобальный хук в качестве решения для вычислений Windows общего назначения.