解决方案 »

  1.   

    自己写一个程序,使用NotifyIcon控件。
    双击,调用ShowWindow API让那个程序显示或者隐藏,隐藏起来,就在任务栏看不见了。
      

  2.   


    [DllImport("user32.dll", EntryPoint = "ShowWindow")]
            private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);//恢复窗口 1是 SW_SHOWNORMAL
      

  3.   

    感谢各位,已经用win32API解决问题。
    但是还有一个问题是,如何检测到外部的exe程序的退出,有没有什么方法让外部程序退出的时候我这边能收到一个消息?
      

  4.   

    用wmi轮询,原帖:http://bbs.csdn.net/topics/390721596,这里略作修改以符合你所需情况static void Main(string[] args)
            {
                ManagementScope scope = new System.Management.ManagementScope(@"\\.\root\CIMV2");
                WqlEventQuery query = new WqlEventQuery(
                    "__InstanceDeletionEvent",
                new TimeSpan(0, 0, 1),
                "TargetInstance isa \"Win32_Process\"");
                ManagementEventWatcher watcher = new ManagementEventWatcher(scope, query);
                watcher.EventArrived += (s, e) => {
                    Console.WriteLine("Process {0} has been closed.",
                        ((ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value).Properties["Handle"].Value);
                };
                watcher.Start();
     
                Console.ReadKey();
            }输出的就是退出进程的pid,Handle换成Name就是进程名称,ExecutablePath是映像路径,CommandLine是命令行,后两个有可能获取不到(例如win7下非管理员权限时的某些系统进程)。用PID匹配最精确。
      

  5.   

    感谢大家,所有问题已经解决,使用win32来控制外部的程序,使用ManagementScope ,WqlEventQuery ,ManagementEventWatcher 来侦测外部事件,长经验了!