Send key strokes to another application C#

2019-02-20 15:59发布

问题:

I need to automate FileMon.exe to startup with filters, save out the log it generates, and then exit.

My solution has been to write an assist application that will do all of this. Which has worked on starting up with specified filters and killing the process, but I still need it to save the log. Do you think it would be silly to send the application keystrokes to save the log? For instance I would send an Alt+F, Alt+S, type filepath, Enter.

How can you send keystrokes like above to another process that is running in C#?

回答1:

As I know, you have to invoke some of native APIs:

-FindWindow to find parent windows you want to work with

-FindWindowEx to find true windows you'll send message to

-SendMessage to send key strokes to those windows

Details of these APIs, refer at MSDN :)



回答2:

You can use Windows.Forms.SendKeys to send keystrokes to the active application.



回答3:

Thanks for all the answers and help guys... I'm actually going to write and invoke a perl script using Win32::GuiTest.



回答4:

That's probably a deaad end. You should look and see if the application (or one of its dependent DLLs) exposes the proper API calls to do what you are trying to do. If you had to do it by keystrokes, you could look into some kind of macro program like MacorMaker.



回答5:

You could use powershell and the windows automation cmdlets up on www.codeplex.com/wasp to do this.

-Oisin



回答6:

Use something like AHK (Auto HotKey) it is a simple language that can be compiled to an EXE and is designed for automating the keyboard and mouse.

Also the IRC Channel and Forums always have people willing to help if need be.



标签: c# input