日期:2014-05-17  浏览次数:22340 次

C# 怎么给控制台程序发送ctrl+c命令?
最近折腾了下站点,又折腾了点winform,遇到一个问题,在winform里Process调用控制台程序之后,运行,想给控制台发送ctrl+c的命令,退出原有任务,有方法没?
C# 控制台 WinForm

------解决方案--------------------
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 就可以了。