我有一個控制檯應用程序,生成一個「CMD MCAST/recv的...> somefile.txt」發送CTRL + C的過程中不殺死我的窗口
(process.standardoutputstream不MCAST正常工作如果您想參與到這個問題看redirecting standard output, event is not raised)
我需要一個CTRL + C發送到MCAST和使用此代碼:
[DllImport("kernel32.dll")]
static extern bool GenerateConsoleCtrlEvent(
uint dwCtrlEvent,
uint dwProcessGroupId);
void start(string path)
{
currentProcess = new Process();
currentProcess.StartInfo.FileName = @"C:\WINDOWS\system32\cmd.exe";
currentProcess.StartInfo.Arguments = "/C " + "mcast /recv /grps:239.255.0.1 /dump:3"
+ " > " + path;
currentProcess.StartInfo.UseShellExecute = false;
currentProcess.Start();
}
void Stop()
{
Process mcast = Process.GetProcessesByName("mcast")[0];
GenerateConsoleCtrlEvent(0 /*CTRL_C_EVENT*/, (uint)mcast.SessionId);
}
然而MCAST與我PROGRAMM和mcasts會話ID共享控制檯是零。所以我的程序也收到CTRL + C並終止(這實際上不是我想要做的),有什麼想法?
編輯:我的所有研究表明,不可能將CTRL + C事件發送到另一個進程。只有WIN_CLOSE事件可以發送,控制檯進程忽略這些事件
你可以使用'Process.Kill()'嗎? – shf301 2013-04-10 17:11:07
不,我需要優雅地結束mcast或丟失數據 – 2013-04-11 06:36:13