Отправить нажатия клавиш в другое приложение C#

Мне нужно автоматизировать запуск FileMon.exe с фильтрами, сохранить журнал, который он генерирует, а затем выйти.

Мое решение состояло в том, чтобы написать вспомогательное приложение, которое будет делать все это. Который работал при запуске с указанными фильтрами и уничтожении процесса, но мне все еще нужно сохранить журнал. Как вы думаете, было бы глупо отправлять нажатия клавиш приложения для сохранения журнала? Например, я бы отправил Alt+F, Alt+S, введите путь к файлу, Enter.

Как вы можете отправлять нажатия клавиш, как указано выше, другому процессу, работающему на C#?


person Game_Overture    schedule 09.04.2009    source источник


Ответы (6)


Насколько я знаю, вам нужно вызвать некоторые из собственных API:

-FindWindow, чтобы найти родительские окна, с которыми вы хотите работать

-FindWindowEx, чтобы найти истинные окна, которым вы отправите сообщение

-SendMessage для отправки нажатия клавиш в эти окна

Подробности об этих API см. в MSDN :)

person Quan Mai    schedule 09.04.2009

Вы можете использовать Windows.Forms.SendKeys для отправки нажатий клавиш активное приложение.

person lc.    schedule 09.04.2009

Спасибо всем за ответы и помощь, ребята... На самом деле я собираюсь написать и вызвать Perl-скрипт, используя Win32::GuiTest.

person Game_Overture    schedule 09.04.2009

Это, наверное, тупик. Вы должны посмотреть и посмотреть, предоставляет ли приложение (или одна из его зависимых библиотек DLL) правильные вызовы API для выполнения того, что вы пытаетесь сделать. Если бы вам приходилось делать это нажатием клавиш, вы могли бы поискать какую-нибудь макропрограмму, например MacorMaker.

person JP Alioto    schedule 09.04.2009

Для этого вы можете использовать powershell и командлеты автоматизации Windows на www.codeplex.com/wasp.

-Ойсин

person x0n    schedule 09.04.2009

Используйте что-то вроде AHK (Auto HotKey). Это простой язык, который можно скомпилировать в EXE-файл. для автоматизации клавиатуры и мыши.

Кроме того, на IRC-канале и форумах всегда есть люди, готовые помочь в случае необходимости.

person UnkwnTech    schedule 09.04.2009