模仿windows任务管理器显示正在运行的应用程序

工作中一直感觉任务栏不够用,密密麻麻的,就想做一个可以将当前正在运行的应用程序以列表的形式展示出来(像开始菜单那样的)进行切换等操作,第一步就是模仿windows任务管理器显示正在运行的应用程序,但是试了很多种方法要么无法显示文件夹或磁盘,或者无法显示一些特殊的程序,比如金山的WPS2012,最后终于找到可以实现的方法,现在写出来分享一下。

 

[DllImport("User32")] private extern static int GetWindow(int hWnd, int wCmd); [DllImport("User32")] private extern static int GetWindowLongA(int hWnd, int wIndx); [DllImport("user32", CharSet = CharSet.Auto)] private extern static int GetWindowTextLength(IntPtr hWnd); [DllImport("user32.dll", EntryPoint = "SetForegroundWindow")] public static extern int SetForegroundWindow(int hwnd); [DllImport("user32.dll")] private static extern bool GetWindowText(int hWnd, StringBuilder title, int maxBufSize); private const int GW_HWNDFIRST = 0; private const int GW_HWNDNEXT = 2; private const int GWL_STYLE = (-16); private const int GWL_EXSTYLE = (-20); private const int WS_VISIBLE = 268435456; private const int WS_BORDER = 8388608; private const int WS_EX_TOOLWINDOW = (int)0x00000080; public List <string> GetRunApplicationList(Form appForm) { try { List <string> appString = new List <string>(); int handle = (int)appForm.Handle; int hwCurr; hwCurr = GetWindow(handle, GW_HWNDFIRST); while (hwCurr > 0) { int isTask = (WS_VISIBLE ); int lngStyle = GetWindowLongA(hwCurr, GWL_STYLE); int lngStyleEx = GetWindowLongA(hwCurr,GWL_EXSTYLE); bool taskWindow = ((lngStyle & isTask) == isTask); bool taskWindowEx = ((lngStyleEx & WS_EX_TOOLWINDOW) != WS_EX_TOOLWINDOW);//加上这个判断后正常显示 if (taskWindow & taskWindowEx) { int length = GetWindowTextLength(new IntPtr(hwCurr)); StringBuilder sb = new StringBuilder(2 * length + 1); GetWindowText(hwCurr, sb, sb.Capacity); string strTitle = sb.ToString(); if (!string.IsNullOrEmpty(strTitle)) { appString.Add(strTitle); } } hwCurr = GetWindow(hwCurr, GW_HWNDNEXT); } return appString; } catch (Exception ex) { throw new ApplicationException("读取应用程序信息时出错:" + ex.Message); } } private void button1_Click(object sender, EventArgs e) { List<string> list=new List<string>(); list=GetRunApplicationList(this); foreach (var l in list) { textBox1.Text +=l+ "\r\n"; } }

转载于:https://www.cnblogs.com/rophie/archive/2011/10/17/2376956.html

据国外研究公司统计,在2008年全球个人计算机用户已经超过10亿,并预测在2010年全球个人计算机用户数量将超过13亿。随着个人计算机走进千家万户,计算机操作系统中的任务管理器也被越来越多的用户所熟悉和使用。 任务管理器是在Windows系统中管理应用程序和进程的工具,通常由Windows操作系统自带,也有提供增强功能的第三方软件。通过任务管理器用户可以方便的查看当前运行的程序、进程、用户、网络连接以及系统对内存和CPU的资源占用,并可以强制结束某些程序和进程,此外还可以监控系统资源的使用状况。 Windows 任务管理器首次出现是在1998年美国微软公司发行的Windows98操作系统中,此后微软的各个版本的Windows操作系统都集成了任务管理器任务管理器并不是Windows系统的专利,它广泛运用于各种操作系统中,在苹果公司的Mac OS 操作系统中有类似的活动监视器(Activity Monitor),在基于Linux的ubuntu操作系统有相类似功能的系统监视器。 Windows任务管理器提供了有关计算机性能的信息,并显示了计算机上所运行的程序和进程的详细信息;如果连接到网络,那么还可以查看网络状态并迅速了解网络是如何工作的。它的用户界面提供了文件、选项、查看、窗口、关机、帮助等六大菜单项,其下还有应用程序、进程、性能、联网、用户等五个标签页。 课题设计就是模拟Windows任务管理器,开发的一个Windows进程管理软件。主要设计的是一个基于窗体的C#程序,在主对话框上面放置了一个标签控件,并创建了应用程序、进程和性能三个页面,标签控件用于选择并显示页面。三个页面分别用于显示当前运行的窗口程序、进程及进程模块、系统资源使用情况。程序还实现了结束任务、等对进程管理的基本功能。在的设计过程中,通过调用Windows API函数而获得任务、进程、线程模块,以及系统资源使用情况等信息。最后在Windows10系统上进行测试,实现了进程管理的基本功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值