-. 杀掉进程的方法: myProcess.Kill()另外关的方法还有: myProcess.CloseMainWindow();
myProcess.Close();

解决方案 »

  1.   

    一. 补充一下: p.StartInfo.FillName=@"d:\a.txt"; 的时候, [进程]选项卡上有, 是 notepad.exe - 它用来打开 a.txt 文件.
      

  2.   

    三,p.StartInfo.CreateNoWindow 是控制是否大开一个 新 窗口, 而不是 用不用窗口,即使窗口隐藏了一还是有窗口的.
      

  3.   

    二,如果换成其它文件,如:
    p.StartInfo.FillName=@"d:\a.doc";//Word文档
    窗口并未隐藏啊,为什么?怎么解决?-------------------------------------private void button4_Click(object sender, EventArgs e)
    {
        p.StartInfo.FileName = @"C:\a.doc";
        p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        bool rtn = p.Start();    // 调用它来隐藏Word窗口.
        HideWordMainWindow();
    }private void HideWordMainWindow()
    {
        Process[] wordProcessList = System.Diagnostics.Process.GetProcessesByName("winword");
        if (wordProcessList != null && wordProcessList.Length > 0)
        {
            ShowWindowAsync(wordProcessList[0].MainWindowHandle, 0);
        }}[DllImport("user32.dll")]
    private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
      

  4.   

    研究了一下Word的启动,看起来它有一些比较鬼秘的行为,当最初用 p.Start() 启动它之后, p 这个进程并非是最终Workd窗口运行的那个,p 更象一个临时的进程, 而最终运行 Word窗口那个进程要在启动了Word之后再用 System.Diagnostics.Process.GetProcessesByName("winword") 找回来.我测试的的系统是XP + Office 2003 ; VS 2005.
      

  5.   

    四,如果调用DOS命令,怎么让其只打开一个窗口?
    比如调用:dir,type,pause命令
    如果分别调用,会打开三个窗口,我想让其在一个窗口进行,该怎么办?
    ________________________________________________________________受别的贴子启发,帮你抄过来了:ProcessStartInfo MyStartInfo = new ProcessStartInfo();
    MyStartInfo.FileName = "cmd.exe";
    MyStartInfo.UseShellExecute = false;
    MyStartInfo.RedirectStandardInput = true;
    MyStartInfo.RedirectStandardOutput = true;
    MyStartInfo.RedirectStandardError = true;
    Process MyProcess = new Process();
    MyProcess.StartInfo = MyStartInfo;
    MyProcess.Start();
    MyProcess.StandardInput.WriteLine("dir");
    strOutput = MyProcess.StandardOutput.ReadToEnd();MyProcess.StandardInput.WriteLine("type");
    strOutput = MyProcess.StandardOutput.ReadToEnd();MyProcess.StandardInput.WriteLine("pause");
    strOutput = MyProcess.StandardOutput.ReadToEnd();MyProcess.WaitForExit();