如何得到当前系统运行的应用程序列表?
即任务管理器中显示的应用程序列表。谢谢!

解决方案 »

  1.   

    Process[] processAlls = Process.GetProcesses();
    foreach( Process pInstance in processAlls )
    {
         MessageBox.Show( pInstance.ProcessName );
    }
      

  2.   

    System.Diagnostics.Process[] processes;
    processes = System.Diagnostics.Process.GetProcesses();
    foreach (System.Diagnostics.Process instance in processes)
    {
    Console.WriteLine(instance.MainModule.FileName);
    }
      

  3.   

    楼上几位说的都是进程啊
    人家要Application哦
      

  4.   

    zhzuo(秋枫) 你怎么和 Knight94(愚翁)的一样?改变量名来混分啊!
      

  5.   

    Application你是怎么理解的?
    我认为Application就是进程,Application只是在编程中的一个称呼
      

  6.   

    可是在任务管理器中看到的Application的个数和Process的个数完全不一样啊!
    Process的个数要多出很多,因为有很多系统和用户的后台进程,怎样把它们
    过滤掉呢?
      

  7.   

    可能是属性不同,有的Process有窗口,有的没有,
    也有的Process有消息列队,有的却没有。
    你参考以下API吧,GetWindowLong也许对你有帮助!
      

  8.   

    socg(小草) ( ) 信誉:100  2006-6-17 2:56:00  得分: 0  
    zhzuo(秋枫) 你怎么和 Knight94(愚翁)的一样?改变量名来混分啊!__________________________________________________________________________
    看看别人回复的时间差.几乎是同时回复的。
    现在愿意帮助人的不多了,怎么还能这么揣测四星用户?
    做人要厚道.
      

  9.   

    Process[] processAlls = Process.GetProcesses();
    foreach( Process pInstance in processAlls )
    {
         MessageBox.Show( pInstance.ProcessName );
    }
      

  10.   

    不知你是不是这个意思:
                Process[] allproc = Process.GetProcesses();
                foreach (Process proc in allproc)
                {
                    if (!proc.MainWindowHandle.Equals(IntPtr.Zero))
                    {
                        if (proc.MainWindowTitle.Equals(""))
                            Console.WriteLine("Name:" + proc.ProcessName);
                        else
                            Console.WriteLine(proc.MainWindowTitle);
                    }
                }
      

  11.   

    zhzuo(秋枫) 你怎么和 Knight94(愚翁)的一样?改变量名来混分啊!
    ==============================
    socg(小草) 朋友,
    我有必要这么做吗?只是Knight94(愚翁) 凑巧比我早了点,在帮人回答问题的时候,我会通过firefox打开当前C#板块所有能回答的提问网页,然后从后面回答到前面。
    可能的情况就是到我回答到这一页时,这一页可能由于已经打开一段时间了,而且其他朋友也可能已经给出答案,或楼主已经结贴,不过我打开的帖子没有刷新,所以发现不了,导致出现这一现象。whChina(江城)(老温) :谢谢你能指出,社区需要你这样会思考的朋友。我想socg(小草) 朋友的举动没有什么恶意,socg(小草) 朋友估计也是无心说了一句,不过介意要多思考问题,慎重行事。
    欢迎大家来我的blog交流技术。
    http://blog.csdn.net/zhzuo
      

  12.   

    是否有相应的API可以用啊?
    我用Process.GetProcesses();始终无法得到和任务管理器一样的结果。
      

  13.   

    任务管理器的应用程序列表就是任务栏里的窗口吧
    用TB_GETBUTTONTEXT
      

  14.   

    Process[] allproc = Process.GetProcesses();
                foreach (Process proc in allproc)
                {
                    if (!proc.MainWindowHandle.Equals(IntPtr.Zero))
                    {
                        if (proc.MainWindowTitle.Equals(""))
                            Console.WriteLine("Name:" + proc.ProcessName);
                        else
                            Console.WriteLine(proc.MainWindowTitle);
                    }
                }
      

  15.   

    过了N长时间不小心又看到了此贴,不好意思 zhzuo(秋枫),是我没有注意到时间
      

  16.   

    System.Diagnostics.Process[] myProcesses;
                myProcesses = System.Diagnostics.Process.GetProcesses();
                foreach (System.Diagnostics.Process instance in myProcesses)
                {
                    if( instance.MainWindowTitle.Length > 0)
                    Console.WriteLine("Process name:{0}",instance.MainWindowTitle);
                }