private void processDataReceived(object sender, DataReceivedEventArgs r) { if (!String.IsNullOrEmpty(r.Data)) { OutputWindow.Invoke(new MethodInvoker(() => { OutputWindow.AppendText(r.Data + "\r\n"); OutputWindow.DeselectAll(); })); } }
private void processExited(object sender, EventArgs e) { unpacker.WaitForExit(); OutputWindow.Invoke(new MethodInvoker(() => { extractToolStripMenuItem.Enabled = true; cancelToolStripMenuItem.Enabled = false; OutputWindow.AppendText("Completed.\r\n"); OutputWindow.DeselectAll(); converterExited = true; })); }
private void extractToolStripMenuItem_Click(object sender, EventArgs e) { extractForm.ShowDialog(this); if (extractForm.DialogResult != DialogResult.OK) { return; } unpacker = new Process(); unpacker.StartInfo.FileName = "m2033unp.exe"; unpacker.StartInfo.CreateNoWindow = true; unpacker.StartInfo.UseShellExecute = false; unpacker.StartInfo.RedirectStandardOutput = true; unpacker.StartInfo.RedirectStandardError = true; unpacker.Exited += new EventHandler(processExited); unpacker.EnableRaisingEvents = true; unpacker.OutputDataReceived += new DataReceivedEventHandler(processDataReceived); unpacker.ErrorDataReceived += new DataReceivedEventHandler(processDataReceived); unpacker.StartInfo.Arguments = parseDialogData(); extractToolStripMenuItem.Enabled = false; cancelToolStripMenuItem.Enabled = true; OutputWindow.Text = "Started...\r\n"; OutputWindow.DeselectAll(); converterExited = false; try { unpacker.Start(); } catch (Win32Exception ex) { OutputWindow.Text = ex.ToString(); converterExited = true; extractToolStripMenuItem.Enabled = true; cancelToolStripMenuItem.Enabled = false; return; } unpacker.BeginOutputReadLine(); unpacker.BeginErrorReadLine(); }