C# 怎么给控制台程序发送ctrl+c命令?
最近折腾了下站点,又折腾了点winform,遇到一个问题,在winform里Process调用控制台程序之后,运行,想给控制台发送ctrl+c的命令,退出原有任务,有方法没?
------解决方案--------------------win api
------解决方案--------------------[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void keybd_event(int bVk, byte bScan, int dwFlags, int dwExtraInfo);
static void Main(string[] args)
{
....
//发送ctrl+c
keybd_event(Convert.ToInt32(System.Windows.Forms.Keys.ControlKey), 0, 0, 0);
keybd_event(Convert.ToInt32(System.Windows.Forms.Keys.C), 0, 0, 0);
...
}
------解决方案-------------------- SendKeys.Send("{Ctrl}+{C}");
------解决方案--------------------额 这个你算问着了,我之前写过..
用api搞定的
先找窗体句柄,
然后对窗体发消息!
------解决方案--------------------1. 这个发送key是小事。
2. 关键你找到那个cmd 窗口,然后让这个窗口get focus, 发送key就可以了。
3. 找到窗口的方法,可以了解一下UI Automation技术。用UISpy看一下cmd窗口的一些属性,根据条件找到窗口,然后就可以做第二点里提到的操作了。
------解决方案--------------------退出原有任务直接用 Process.Kill 就可以了。