精华内容
下载资源
问答
  • 在我高中时,那个时候东方还特别火,当时B站上的野生技术协会里就几乎被BadApple屠版了,从一开始的原版视频到后来的控制台动画,从记事本动画再到的任务管理器动画,可以说大佬们在尝试使用各种原本可能的东西放...

    在我高中时,那个时候东方还特别火,当时B站上的野生技术协会里就几乎被BadApple屠版了,从一开始的原版视频到后来的控制台动画,从记事本动画再到的任务管理器动画,可以说大佬们在尝试使用各种原本不可能的东西放着烂苹果了!


    控制台和记事本的BadApple还好说,原理是先把BadApple的视频逐帧输出为图像,然后再把输出的帧画面转换为字符画(每一个像素点都使用一个符号替代,不同风格的像素点选取不同的符号,这样当你输出的“符号像素”足够密集时,摘下你的眼镜,一张字符编码的图片就出现了!)

    这有点类似于图像的二值化处理,相信玩过验证码识别或者图像处理的同学对于“二值化”这个概念并不陌生。取图像上每一个像素点取其灰度值,当像素点的灰度值大于某一个阈值时,将其灰度值设为255,否则设置为0。这样便能将图片很快的转换为“非黑即白”的“二值图片”了。在字符画化图像时,我们也可以根据此原理,将灰度值大于阈值的像素输出符号“#”,否则输出空格。这样如上图所示的画面就绘制完成了!

    同样,还能多玩点儿花样,根据灰度值的不同输出一些不同的符号(如下图所示),这点也是很好用代码实现的。(如果不知道如何用代码实现的小伙伴可以使用“ASCII Generator”这个工具)

    (多符号输出的字符画) 


    然后剩下的便是编程实现:将这些字符画逐帧打到控制台或者记事本中去     的功能了。只要对好时间轴,配合好BGM,字符动画就成型了。 

    咳咳,扯远了,差点忘记了本文的正题。。。重点还是要讲讲如何实现任务管理器播放BadApple!下面先上一张效果图:

    众所周知任务管理器中的CPU图表是无法显示字符的(废话。。) ,所以当初我是怎么也没想通这个效果是咋实现的!直到后来,自己接触到了Win32API编程,了解到了一些Win32的API,然后存在脑子中的疑惑才稍稍有些被解开了的迹象~

    在详细讲述实现方式之前,先要普及一些东西:句柄 、回调函数Spy++

    一、句柄

    在Windows编程中句柄是整个编程的基础,一个句柄是使用一个唯一的整数值来表示不同的对象或者对象中不同的实例,例如可以表示不同的窗口,窗口内不同的Button、文本域、显示图表等等。应用程序能够通过句柄来访问对象。

    二、回调函数

    回调函数在百度百科上的定义是:一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

    说人话就是:假如有一个A模块需要调用B模块中的b()方法,但是b()方法本身又不能完成所有的任务,有需要反过来调用A模块中的a()方法,那么我们就称a()方法为回调函数,而这个过程我们称为回调。详细地介绍可以看这里:什么是回调函数

    三、Spy++

    首先说明Spy++并不是个概念,而是一个工具。用过Visual Studio的小朋友们可能知道这个牛逼轰轰的东西,他能查找并显示各窗口、进程、线程甚至是内部消息,能图形化展示各窗口、进程、线程之间的关系图形树。作为VS附带的工具,大家可以在VS的“工具”栏找到找到它。

     


    好了,普及完一些基础知识,接着就该开始进行实际操作了!

    对于这个项目我的实现思路是这样的:首先想办法拿到任务管理器中CPU图表的句柄,然后调用绘图函数,直接把截取的视频图片逐帧绘制在CPU的图表位置,最后再调整好时间间隔,配上BGM,这段动画就大功告成了!

     

    0x00 准备阶段

    首先我们打开Spy++

    可以看到Spy++对当前系统中运行的进程们进行了快照 ,并很直观地显示了出来。

    然后我们在其中搜索任务管理器的进程:

    点击①这个小望远镜 ,在弹出的小窗口中,拖动②中的指针到任务管理器窗口上,然后松手。

    然后我们就可以看到任务管理器的窗口对象就被搜索到了。此时我们再点击“确定”按钮:

    可以看到Spy++帮我们将任务管理器窗口及其内部的所有子控件、线程等等都列了出来。

    同理,我们直接查找任务管理器中的CPU图表控件:

    Spy++也很快搜索了出来。

    0x01 使用代码获取目标句柄

    通过Spy++查找到了目标之后我们需要在代码中拿到这个目标的句柄,以方便后续对该目标进行操作。这里我们需要用到Win32 API中的FindWindow函数。

    FindWindow函数原型是这样的:

    其中第一个参数传入的是所属类名,第二个参数传入的是标题名字,返回值是一个窗口的句柄,如果查询不到则返回NULL。再结合上面的这张Spy++的图,相信大家应该就会知道我们一开始使用Spy++的意图了。

    因为我本身是写Java的,稍微懂点C#,对别的就不是很在行了。所以这个任务管理器版的BadApple我是用C#实现的。FindWindow被封装在user32.dll中,因此在C#中需要使用调用非托管dll的方法调用:

     在C#中使用IntPtr保存目标句柄。函数使用方式如下:

    在user32.dll中还有个FindWindowEx函数是用来获得窗口下子控件的句柄的,一开始我是使用的FindWindowEx函数,但是发现这个函数查找到的目标缺不对,返回的句柄根本就不是我所需要的CPU图表的。稍微迷糊了一会儿,后来在MSDN里面查到,原来FindWindowEx是返回查找到的第一个结果,而通过上面Spy++的截图我们可以看到,在任务管理器中有大量同类名的控件,而FindWindowEx只返回第一个,所以有很大几率返回的根本不是我们想要的那一个了。这里说一下也算是记录一下自己遇到的小坑吧。。。

    这里我们最后用到的方法是:EnumChildWindows,枚举当前窗口下所有子控件。这里函数原型我就不放图了,大家有兴趣可以去MSDN上查一查。我直接放C#中的代码实现。

    它参数中有一个回调函数 CallBack,用于在找到一个子控件之后,我们对这个子控件进行操作,代码是这样的:

    声明:

    实现:

     实例化并使用:

    这里稍微解释一下回调函数的实现中那个计算区域大小的部分,主要还是因为任务管理器中有着大量类名为CtrlNotifySink的Layout包裹着各种显示用的图表,然后我也想不出有什么特征值能够帮助我找到CPU的那个图,所以我就用了比较傻的方式,使用一个Rect类表示目标区域长方形面积,然后判断区域的长宽值,找到其中区域较大的那一块儿,就有很大几率是CPU图表了(也有一定几率会拿到硬盘或者内存的图表。。。)

     

     

    0x02 在目标区域进行绘图

    在C#中可以用Graphics类中的DrawImage方法,将一张完整的图片绘制到目标区域去。

    DrawImage需要的Image对象我们可以使用IO直接从文件中读取,代码实现如下:

    其中imgPath是一个string类型的文件地址。

    然后后续的设置延迟,校对时间轴操作就很基础了。原视频是30帧/秒的帧率,因此我们需要设置的每帧播放的间隔就是33.33毫秒,这里不多赘述。

     

    0x03 对图像进行二值化处理

    如果仅仅只做前两步操作,而且好巧不巧你截的图也仅仅只是从原视频中截取的话,那么你播放出来的动画也会是原版的视频的感觉。这样就会产生满满的违和感!所以我们还需要再对图片进行一些处理。上面我们提到了图像二值化这个概念。在本章我会详细解释一下这个操作。

    二值化图像首先要取得像素点的灰度值,这里我就比较直接地写了:

            /// <summary>
            /// 求图像的灰度值
            /// </summary>
            /// <param name="color"></param>
            /// <returns></returns>
            private static int greyVal(Color color)
            {
                //int grey = (int)(color.R + color.G + color.B) / 3;//平均值法求灰度值
                int grey = (int)(0.299 * color.R + 0.587 * color.G + 0.114 * color.B);//微调
                return grey;
            }

    本来是打算直接用平均值法将灰度值设为这个点RGB参数的平均值,但是在后续出图微调的时候发现有部分图有点不美观,显示的不对,所以后面自己改了些参数。

    自定义的二值化代码如下:

            /// <summary>
            /// 二值化输出图像
            /// </summary>
            /// <param name="img"></param>
            /// <param name="ft"></param>
            public static Bitmap BinaryzationImage(Bitmap img, FrameTimer ft)
            {
                int w = mRect.Right - mRect.Left;
                int h = mRect.Bottom - mRect.Top;
    
                int UpPixel = 0;
    
                for (int y = 0; y < img.Height; y++)   //把图像二值化
                {
                    for (int x = 0; x < img.Width; x++)
                    {
    
                        int grayVal = greyVal(img.GetPixel(x, y)) > 192 ? 255 : 0;
                        if (grayVal < 128)
                        {
                            img.SetPixel(x, y, Color.FromArgb(grayVal, grayVal, grayVal));
                        }
                    }
                }
    
                for (int x = 0; x < img.Width; x++)   //边缘检测
                {
                    for (int y = 0; y < img.Height; y++)
                    {
    
                        int grayVal = greyVal(img.GetPixel(x, y)) > 192 ? 255 : 0;
                        if (Math.Abs(grayVal - UpPixel) > 250)
                        {
                            img.SetPixel(x, y, Color.FromArgb(17, 152, 187));
                        }
                        UpPixel = grayVal;
                    }
                }
    
                for (int y = 0; y < img.Height; y++)   //边缘检测
                {
                    for (int x = 0; x < img.Width; x++)
                    {
    
                        int grayVal = greyVal(img.GetPixel(x, y)) > 192 ? 255 : 0;
                        if (Math.Abs(grayVal - UpPixel) > 250)
                        {
                            img.SetPixel(x, y, Color.FromArgb(17, 152, 187));
                        }
                        if ((x == 0 || x == img.Width - 1) || (y == 0 || y == img.Height - 1))  //深蓝色边框
                        {
                            img.SetPixel(x, y, Color.FromArgb(17, 125, 187));
                        }
                        UpPixel = grayVal;
                    }
                }
    
                for (int y = 0; y < img.Height; y++)  //背景处理
                {
                    for (int x = 0; x < img.Width; x++)
                    {
    
                        int grayVal = greyVal(img.GetPixel(x, y));
                        if (grayVal < 128)       //背景设为浅蓝色
                        {
                            img.SetPixel(x, y, Color.FromArgb(241, 246, 250));
                        }
                        if ((y % (h / 10) == 0) && y != 0)   //画方格的横线
                        {
                            img.SetPixel(x, y, Color.FromArgb(206, 226, 240));
                        }
                        if ((x % (w / 20) == (ft.tick() / 1000) * ((w / 40)) % (w / 20)) && x != 0)   //画方格的竖线
                        {
                            int rx = x;
                            img.SetPixel(rx, y, Color.FromArgb(206, 226, 240));
    
                        }
                    }
                }
    
                return img;
    
            }

    FrameTimer是一个自定义的计算时间的类。因为为了模拟任务管理器的动作,所以还需要在原图上画出横纵的表格线。而在FrameTimer中通过tick()方法,则可以判断当前播放到了第几秒,从而在相应的位置画出图像。

    FrameTimer类定义如下:

        /// <summary>
        /// 帧动画定时器类
        /// </summary>
        class FrameTimer
        {
            /// <summary>
            /// 开始时间
            /// </summary>
            public DateTime startTime;
    
            public FrameTimer()
            {
                //设置开始时间
                this.startTime = DateTime.Now;
            }
    
            public int tick()
            {
                DateTime now = DateTime.Now;
    
                //计算差值
                TimeSpan ts = now - this.startTime;
                int differenceValue = ts.Seconds;
    
                //返回差值
                return differenceValue;
            }
    
        };

    这样,当我们循环调用BinaryzationImage方法时,在图片文件读完之前就能一直拿到经过处理的图像而进行输出了。

     

    0x04 实际操作中遇到的一点小坑

    按道理来说做到上一步为止,我们就已经能够实现想要的效果了。但是如果电脑前的小朋友们按这个流程来就会发现,输出的画面显得巨卡无比。

    原因很简单,是因为在二值化图片时使用到了Bitmap类的GetPixel和SetPixel方法,而这两个方法时间开销是非常大的,起码在这个算法里,在33毫秒内是无法处理完一帧图像的。所以在播放的时候延迟就非常严重,看起来就超级卡。

    既然明确了问题所在,那么剩下的就是解决思路了。

    这里提供两个解决思路:

    1. 将Bitmap图转换为byte[]数组,在内存中直接对byte[]数组进行操作,操作完成后再将byte[]数组转换成Bitmap输出,这样就不再需要不停地GetPixel和SetPixel了。
    2. 使用指针遍历像素点,直接对像素点进行修改操作。

    这里比较推荐第一种做法,因为在C#中,直接通过指针操作内存被认为是不安全的行为,除了需要使用unsafe关键字之外还需要在后期编译代码时勾上“允许不安全代码”选项。本来C#好不容易取消了指针这一令萌新头疼的东西,这儿又要用回指针,这也算是一种本末倒置了吧。。。

    一开始我确实是想做直接输出的,但是最后因为手上又有些别的事儿了,就没有完成这部分代码。时隔多日之后再回想起来这回事儿的时候已经不想再去处理了(因为懒hhhhhh),所以就直接把功能共一个整体划分成了2部分,批量二值化图片和播放,最后播放部分是直接读取的已经转换好并保存在本地的图片。

    有兴趣的小伙伴可以自己去研究一下将二值化和播放合在一起吖,这里给一个参考思路:解决 C# GetPixel 和 SetPixel 效率问题

    0x05 测试效果

    我将功能逻辑部分封装成了一个dll,然后简单地写了个控制台程序去调用dll中的方法。当当前目录下无二值化后的图片文件时,程序会自动先将原始资源文件进行二值化编辑并保存;当当前目录下有二值化后的图片时,则直接进行播放。

    运行效果如下 :

    BadApple是原始资源文件夹,Covert是二值化之后的资源文件。这里需要保证“BadApple”和“Covert”不被删除,否则如果删除了前者,则会抛出文件读取异常,删除后者你可能就要等程序二值化等好久啦!

     

    0x06 发布、测试及修改

    按照惯例这里附上程序demo和源代码,方便有需要的人拿去修改优化。

    作为一个萌新,因为是随便写着好玩儿的东西,所以代码封装的不是很好,制作稍显粗糙。还请各位大佬轻喷~

     

    源码及demo

     

    展开全文
  • WINCE 任务管理器

    热门讨论 2010-11-26 12:26:31
    WINDOWS CE底下可以用的任务管理可以用来杀死多余的进程。
  • windows10任务管理器查——磁盘

    千次阅读 2016-06-08 10:55:41
    较详细介绍了windows10下任务管理器中的磁盘信息,附图
     
    
    分析:
    1.此处表示读取时间与写入时间的百分比(另外某种程度上,也可以看出读取速度和写入速度的百分比。波峰越高,表示读读取时间越多,磁盘正在进行大量的读取操作。这里显示的是一分钟内的情况。最左边代表最早的,最右边代表最近的,也就是最新的情况。
    2.此处代表磁盘的传输速率,波峰越高,读取或传输速度越快,60MB横线代表近段时间的读写速度峰值。此图也是一分钟内的,时间轴同上。
    3.这里显示的是磁盘名称,包括接口类型:sici。
    响应时间为10.5ms,其与I/0控制器的利用率如上图。a:I/0到达速度,RS:I/0控制器处理一个请求的评价时间,其倒数为服务效率。
    横轴某种程度上反应上了队列的长度,等待队列越长,响应时间越长。

    读写速度:带宽,磁盘的实际读写速度。与IOPS(每秒执行的IO操作次数。有部分关系:带宽=IOPS*I/0块大小,只能用来衡量小I/0随机读写。,实际上很复杂。


    区域1:
    磁盘活动的进程:表示近段时间,磁盘处理的进程,某一时段的活动进程
    磁盘活动。最上层表示当前正在对磁盘进行操作的进程,可以看出在不断变化。这里可以看到进程的所处的磁盘位置,优先级,以及响应时间(进入队列到离开队列的时间)
    区域2:
    表示磁盘的读写速度
    区域3:
    表示等待队列长度。
    展开全文
  • Windows任务管理器参数解释

    千次阅读 2019-06-05 18:04:55
    使用任务管理器可以监视计算机性能的关键指示可以查看正在运行的程序的状态,并终止已停止响应的程序。也可以使用多达 15个参数评估正在运行的进程的活动,查看反映 CPU 和内存使用情况的图形和数据。  此外,...

     Windows任务管理器参数解释


     

    一、概述及菜单

      任务管理器提供正在您的计算上运行的程序和进程的相关信息。也显示最常用的度量进程性能的单位。

    使用任务管理器可以监视计算机性能的关键指示器。可以查看正在运行的程序的状态,并终止已停止响应的程序。也可以使用多达 15个参数评估正在运行的进程的活动,查看反映 CPU 和内存使用情况的图形和数据。

      此外,如果与网络连接,则可以查看网络状态,了解网络的运行情况。

      如果有多个用户连接到您的计算机,您可以看到谁在连接、他们在做什么,还可以给他们发送消息。

    1,更改任务管理器中的显示选项

    单击与要更改的显示选项对应的选项卡。单击: “应用程序”选项卡,可以查看详细信息、大图标或小图标。 “进程”选项卡,可以选择要显示的列。 “性能”选项卡,可以更改 CPU 使用记录曲线图以及显示内核时间。 “网络”选项卡,可以查看有关网络连接的信息。在“查看”菜单上单击所需的命令。

    注意

    要显示内核时间以便在“CPU 使用”和“CPU使用记录”曲线图中添加红线,请单击“性能”选项卡。在“查看”菜单上单击“显示内核时间”。红线指示内核操作占用的 CPU资源数量。

    2,更新任务管理器数据

    在“查看”菜单上,单击“立即刷新”。

    注意

    要更改数据自动更新的频率,请在“查看”菜单上指向“更新速度”,然后单击所需的命令。 要暂时固定“任务管理器”中显示的数据,请在“查看”菜单上指向“更新速度”,然后单击“暂停”。 默认情况下,每隔两秒钟会对数据自动更新一次。

     

    二、“应用程序”选项卡显示计算机上正在运行的程序的状态。在此选项卡中,您能够结束、切换或者启动程序。

    1,启动新程序

    单击“应用程序”选项卡中的“新任务”。 在“打开”框中键入或选择要添加程序的名称,然后单击“确定”。

    注意

    “新任务”相当于“开始”菜单中的“运行”命令。 如果不知道要添加程序的名称,请单击“浏览”搜索该程序。

    2,切换到另一个程序

    在 “应用程序”选项卡上,单击要切换到的程序,然后单击“切换至”。

    3,更改正在运行的程序的优先级

    在 “进程”选项卡上,用右键单击要更改的程序,指向“设置优先级”,然后单击所需的命令。

    注意

    要查看正在运行的程序的优先级,请在“进程”选项卡上,单击“查看”菜单上的“选择列”。在“选择列”对话框中,选中“基本优先级”,然后单击“确定”。 更改进程的优先级可以使其运行更快或更慢(取决于是提升还是降低了优先级),但也可能对其他进程的性能有相反的影响。

    4,使用任务管理器终止程序

    在“应用程序”选项卡上,单击要终止的程序,然后单击“结束任务”。

    注意

    该程序中任何未保存的输入数据或所作更改均将丢失。 如果使用“结束任务”不能立即结束该程序,则可以单击要终止的程序,然后单击“转到进程”,在进程选项卡上进行操作。

     

    三、“进程”选项卡显示关于计算机上正在运行的进程的信息。例如,您可以显示关于 CPU和内存使用情况、页面错误、句柄计数以及许多其他参数的信息。

    1,进程计数器列标题

    在“进程”选项卡上,可以使用下列计数器监视正在运行的进程,这些计数器可以显示为列标题。要将某个进程显示为列标题,请在“查看”菜单上单击“选择列”。选中与要显示为列标题的进程对应的复选框。

    基本优先级

      决定处理器处理进程线程的顺序的优先级。可以使用“任务管理器”查看和更改基本优先级。

      对于“消息队列”,则是指定队列在公共队列中的优先级的属性。您可以将基本优先级设置成从 -32,768 到32,767;默认的优先级是0。专用队列不支持基本优先级。“消息队列”首先根据基本优先级路由和传递消息,然后根据消息优先级路由和传递消息。

    CPU 时间

      在“任务管理器”中,进程从启动起使用的总处理器时间,以秒为单位。

    CPU 使用情况

      在“任务管理器”中,进程从上一次更新以来使用 CPU的时间百分比。在“任务管理器”的“进程”选项卡上,列标题是“CPU”。

    GDI 对象

      来自应用程序编程接口 (API) 的“图形设备接口”(GDI)库的对象,用于图形输出设备。在“任务管理器”中,指进程当前使用的 GDI 对象数。

    句柄数

      在“任务管理器”中,进程对象表中的对象句柄。(句柄:在用户界面中,指添加到某个对象的界面,便于操作移动、调整大小、调整形状或其他属于对象的功能。在程序设计中,指的是指针到指针,也就是,允许某个程序访问所识别的资源的标记。)

    图像名

      在“任务管理器”中的进程名称,即“映像名称”。

    I/O 其他

      在“任务管理器”中,由进程产生的非读非写的输入/输出操作的数量,这包括文件、网络和设备I/O。该操作类型的范例是控制函数。指向 CONSOLE (控制台输入对象)句柄的“其他类型的 I/O”不计算在内。

    I/O 其他字节

      在“任务管理器”中,由进程产生的非读非写的输入/输出操作中所传输的字节数,这包括文件、网络和设备I/O。该操作类型的范例是控制函数。定向到 CONSOLE (控制台输入对象)句柄的“其他类型的 I/O字节”不计算在内。

    I/O 读取

      在“任务管理器”中,由进程产生的读的输入/输出操作的数量,这包括文件、网络和设备I/O 。该操作类型的范例是控制函数。定向到CONSOLE (控制台输入对象)句柄的“I/O 读操作”不计算在内。

    I/O 读字节

      在“任务管理器”中,由进程产生的输入/输出操作中的读取的字节数,这包括文件、网络和设备I/O。该操作类型的范例是控制函数。定向到 CONSOLE (控制台输入对象)句柄的“I/O 读取字节”不计算在内。

    I/O 写入

      在“任务管理器”中,由进程产生的写的输入/输出操作的数量,这包括文件、网络和设备I/O 。该操作类型的范例是控制函数。定向到CONSOLE (控制台输入对象)句柄的“I/O 写操作”不计算在内。

    I/O 写字节

      在“任务管理器”中,由进程产生的输入/输出操作中的写入的字节数,这包括文件、网络和设备I/O。该操作类型的范例是控制函数。定向到 CONSOLE (控制台输入对象)句柄的“I/O 写入字节”不计算在内。

    内存使用情况

      在“任务管理器”中,进程的当前工作集,以千字节为单位。当前工作集是当前驻留在内存中的页面数。在“任务管理器进程”选项卡中,列标题是“内存使用”。

    内存使用 Delta

      在“任务管理器”中,自上一次更新以来所使用的内存的改变量,以千字节为单位。

    非分页池

      永远不会页入磁盘的操作系统内存。页面调度就是将很少使用的程序工作内存部分从 RAM移到其他存储媒体,通常是硬盘。在“任务管理器”中,进程使用的内存量以 KB 为单位。

    页面错误

      当软件试图读取或写入标记为“不存在”的虚拟内存位置时发生的中断。

      在“任务管理器”中,页面错误是进程中当数据不在内存而必须从磁盘检索的次数。页面错误值从进程启动的时间开始累计。

    页面错误增量

      在“任务管理器”中,自上一次更新开始的页面错误次数的变化。

    分页池

      已指派给进程的,已及可以分页的系统分配的虚拟内存。页面调度就是将很少使用的程序工作内存部分从 RAM移到其他存储媒体,通常是硬盘。在“任务管理器”中,进程使用的系统分配虚拟内存数量以 KB 为单位。

    峰值内存使用率

      在“任务管理器”中,自进程启动以来驻留于进程中的物理内存的峰值。

    PID(进程标识符)

      唯一区分运行时的进程的数字标识符。使用“任务管理器”可以查看 PID。

    会话 ID

      拥有该进程的“终端服务”会话 ID 。只有安装了“终端服务”计数器才可以使用计数器。

    线程计数

      在“任务管理器”中,在进程中运行的线程数。

    用户名

      使 Windows标识用户帐户的唯一名称。帐户的用户名在其自身所在的域或工作组中的其他组名和用户名之中必须是唯一的。(用户:包含在服务器上的有用户权限的所有用户的特殊组。当Macintosh 用户将权限分配给每个人时,这些权限也将分配给组的用户和来宾。 )

    USER 对象

      “Window管理器”对象,包括窗口、菜单、光标、图标、异常分支、加速器、监视器、键盘布局和其他内部对象。在“任务管理器”中,指进程当前使用的USER 对象数。

    虚拟内存大小

      在“任务管理器”中,指分配给进程的虚拟内存数或地址空间。

      (虚拟内存:计算机使用的临时存储器,用来运行所需内存大于计算机具有的内存的程序。例如,程序可以访问计算机硬盘驱动器上 4GB 字节的虚拟内存,即使计算机只有 32 MB 的 RAM。当前没有装入计算机内存的程序数据将保存到页面文件中。)

      (页面文件:硬盘上的隐藏文件,Windows 用该文件来存储不能装入内存的程序和数据文件部分。页面文件和物理内存或 RAM构成虚拟内存。需要时,Windows将数据从页面文件移至内存,然后将数据从内存移至页面文件以便为新数据腾出空间。页面文件也被称为交换文件。 )

     

    2,指定进程计数器列标题

    在“进程”选项卡的“查看”菜单上,单击“选择列”。 选中与要显示为列标题的进程计数器对应的复选框,然后单击“确定”。

    注意

    有关进程计数器的详细信息,请单击“相关主题”。

    3,对进程列表排序

    在 “进程”选项卡上,单击您要根据其进行排序的列标题。

    注意

    要反转排序顺序,请再次单击列标题。 

    4,使用任务管理器终止进程

    在“进程”选项卡,单击要结束的进程,然后单击“结束进程”。

    要点

    终止进程时要小心。如果结束应用程序,您将丢失未保存的数据。如果结束系统服务,则系统的某些部分可能无法正常工作。

    注意

    若要结束某个进程以及由它直接或间接创建的所有进程,右键单击“进程”选项卡上要结束的进程,然后单击“结束进程树”。

    如果终止了电子邮件程序(如 Microsoft Outlook)的进程树,也就同时终止了相关的进程,如 MAPI 后台处理程序mapisp32.exe。

    5,给处理器指派进程

    在 “进程”选项卡上,用右键单击要指派的程序,单击“设置仿射性”,然后单击一个或多个处理器。

    注意

    “设置仿射性”命令仅在多处理器计算机上可用。 使用“设置仿射性”命令可以将程序或进程的执行限制在选定的处理器上,并且可能导致总体性能下降。

     

    四、“性能”选项卡显示计算机性能的动态概述,其中包括:

    CPU 和内存使用情况的图表。 计算机上正在运行的句柄、线程和进程的总数。 物理、核心和认可的内存总数(KB)。

    说明:查看计算机性能

    单击“性能”选项卡。

    注意

    “性能”选项卡显示有关计算机性能的信息,如 CPU 和各种内存的使用情况。 有关“性能”选项卡上显示的字段的详细信息,请单击“相关主题”。

    1,CPU 使用情况

    表明处理器工作时间百分比的图表。该计数器是处理器活动的主要指示器。查看该图表可以知道您当前使用的处理时间是多少。如果您的计算机看起来运行较慢,该图表就会显示较高的百分比。

    2,CPU 使用记录

    显示 CPU的使用程度随时间的变化情况的图表。图表中显示的采样情况取决于“查看”菜单上您选择的“更新速度”值。更新的几个可能值为: = 每秒两次;正常 = 每两秒一次; = 每四秒一次;暂停 =显示器不自动更新。

    3,PF 使用情况

    正被系统使用的页面文件的量。如果计算机运行接近最大限度,可以增大页面文件的大小。

    4,页面文件使用记录

    显示页面文件的量随时间的变化情况的图表。图表中显示的采样情况取决于“查看”菜单上您选择的“更新速度”值。

    5,总数

    计算机上正在运行的句柄、线程和进程的总数。

    6,执行内存 (K)

    分配给程序和操作系统的内存。由于复制到页面文件的内存(称为虚拟内存)的存在,“峰值”下所列的值可以超过最大物理内存。“总数”的值与“页面文件使用记录”图表中显示的值相同。

    7,物理内存 (K)

    计算机上所安装的总物理内存,也称为RAM。“可用”表示可供使用的内存的量。“系统缓存”显示当前用于映射打开的文件的页面的物理内存。

    8,内核内存 (K)

    操作系统内核和设备驱动程序所使用的内存。“分页”是可以复制到页面文件中的内存,由此可以释放物理内存。然后,物理内存可以由操作系统使用。“非分页”是保留在物理内存中的内存,不会复制到页面文件中。

     

    五、“网络”选项卡显示网络性能的图形表示。它提供了简单、定性的指示器,以显示正在您的计算机上运行的网络的状态。只有当网卡存在时,才会显示“网络”选项卡。

      在该选项卡上,可以查看网络连接的质量和可用性,无论是连接到一个还是多个网络上。

    说明:查看网络连接

    单击“网络”选项卡。

    注意

    只有当网卡存在时,才会显示“网络”选项卡。 “网络”选项卡指明与本地计算机接通的连接的网络流量。详细信息,请单击“相关主题”。

      “网络”选项卡提供有关本地计算机所连接的网络通信量的指示。通过参考它,可以很快决定正被消耗的网络带宽量。使用多个网络连接时,通过选项卡该可以轻松地比较每个连接的通信量。

      如果您的计算机上有多个网卡,则图表就会显示包含所有网络的复合索引,以表明所有网络通信量。

      为了在所有接口的网络通信量图表中都显示可见线条,视图会自动进行缩放,以放大通信量与可见带宽的关系视图。这样,在通信量低的情况下,图表的全高可以仅表示可用带宽的5%。当通信量高于该级别时,缩放程度将会减小,以便以较低的放大率显示当前通信量视图(例如,显示总可用带宽的10%)。图表上显示的百分比越大,通信量(相对于可用带宽)的放大率就越小。缩放系数显示在图表上。要禁用缩放功能,请在“选项”菜单上单击“自动缩放”以切换缩放系数的值。

      此外,还可以更改显示在图表下面的列标题。这些标题如下表所述。

    网卡名称是“网络连接”文件夹中网络适配器的名称。适配器描述 适配器的有关描述,通常与网络连接文件夹中的设备名称相同。网络利用 网络利用百分比,基于接口的初始连接速度。链接速度 源自初始连接速度的接口连接速度。发送字节吞吐量 在轮询时间周期内从计算机发出的通信量所使用连接带宽百分比。接收字节吞吐量 在轮询时间周期内计算机接收的通信量所使用连接带宽百分比。字节吞吐量 在轮询时间周期内发送和接收的通信量所使用连接带宽百分比。发送的字节数 到目前为止该连接上所发送的总字节数。累计,可以重置。接收的字节数 到目前为止该连接上所接收的总字节数。累计,可以重置。字节总数 到目前为止该连接上发送和接收的总字节数。累计,可以重置。发送的字节数/间隔 在轮询时间周期内该连接上所发送的总字节数。接收的字节数/间隔 在轮询时间周期内该连接上所接收的总字节数。字节数/间隔 在轮询时间间隔内该连接上发送和接收的总字节数。发送的单播数 更高级别的协议请求传送到单播地址的总字节数。该值中包括已被丢弃或未被发送的数据包。接收的单播数 更高级别的协议请求从单播地址接收的总字节数。单播数 到目前为止“发送的单播数”和“接收的单播数”的总计。发送的单播数/间隔 在轮询时间间隔内通过该连接由更高级别的协议请求传送到子网单播地址的总字节数。接收的单播数/间隔 在轮询时间间隔内通过该连接从子网单播地址传送到更高级别协议的总字节数。单播数/间隔 在轮询时间间隔内该连接的“发送的单播数”和“接收的单播数”的总计。发送的非单播数 到目前为止通过该连接由更高级别的协议请求传送到非子网单播地址的总字节数。接收的非单播数 到目前为止通过该连接从非子网单播地址传送到更高级别协议的总字节数。非单播数 到目前为止“发送的非单播数”和“接收的非单播数”的总计。发送的非单播数/间隔 在轮询时间间隔内通过该连接由更高级别的协议请求传送到非子网单播地址的总字节数。接收的非单播数/间隔 在轮询时间间隔内通过该连接从非子网单播地址传送到更高级别协议的总字节数。非单播数/间隔 在轮询时间间隔内“发送的非单播数”和“接收的非单播数”的总计。

     

    六、“用户”选项卡显示可以访问该计算机的用户,以及会话的状态与名称。“客户端名称”指定使用该会话的客户机的名称(如果有的话)。“会话”为您提供一个用来执行诸如向另一个用户发送消息、或连接到另一个用户会话这类任务的名称。

      只有在您所用的计算机启用了“快速用户切换”功能,并且作为工作组成员或独立的计算机时,才出现“用户”选项卡。对于作为网络域成员的计算机,“用户”选项卡不可用。

    说明:查看用户活动

    单击“用户”选项卡。

    注意

    如果启用“快速用户切换”,则会显示“用户”选项卡。有关“快速用户切换”的详细信息,请单击“相关主题”。 只有当所用计算机是工作组成员或独立计算机时,“快速用户切换”才可用。在属于网络域的计算机上,“快速用户切换”不可用。

      “用户”选项卡上的每个字段的说明如下。详细信息,请单击下列某项:

    1,用户

    显示登录该计算机的用户。

    2,ID

    显示该标识该计算机上的会话的数字 ID。

    3,状态

    显示会话的当前状态。“任务管理器”中的可能会话状态有“正在运行”和“已断开”。

    4,客户端名称

    如果有的话,指定使用会话的客户机的名称。

    5,会话

    显示该计算机上的会话名称

     

    展开全文
  • windows任务管理器

    千次阅读 2018-12-10 11:18:47
    今天发现使用windows任务管理器时,里面的功能并没有全部用过,需要解决很多问题时,非常慌张,做两个总结,探究一下windows10里任务管理器里的功能。 1.文件,选项,查看 点击文件 会出现运行新任务和退出,点击...

    今天发现使用windows任务管理器时,里面的功能并没有全部用过,需要解决很多问题时,非常慌张,做两个总结,探究一下windows10里任务管理器里的功能。
    1.文件,选项,查看
    点击文件
    在这里插入图片描述
    会出现运行新任务退出,点击运行新任务会进入下图,输入新建任务,此处运行想要的程序。点击退出,结束任务管理器进程。
    在这里插入图片描述
    点击选项
    在这里插入图片描述
    出现置于顶层,点击后,任务管理器在界面的顶层,实现置顶功能。最小化时隐藏,点击后,再点击最小化时,windows的任务栏里的任务管理器图标消失。
    点击查看
    在这里插入图片描述
    点击按类型分组,可将进程按照不同类型区分,全部展开将进程树全部展开,全部折叠将进程树收缩,只能看到应用的分类(注意不是进程,分类里面的才是进程)
    2.进程,性能,应用历史记录,启动,用户,详细信息,服务
    进程点击右键
    在这里插入图片描述
    点击结束任务,关闭进程。
    点击资源值里面,可调节内存,磁盘,网络的显示格式,数值或百分比。
    点击调试,附加到进程中,看进程状态。
    创建转储文件,将进程堆栈信息存储到文件中,分析dump等。
    转到详细信息可进入详细信息界面,可看到进程PID,描述等详细信息。
    打开文件所在位子位置,顾名思义。重点分析属性,点击属性进入界面:
    在这里插入图片描述
    点击常规可看到某个进程详细的信息:文件类型,文件路径,文件大小,创建时间修改时间访问时间。
    还可以看到git版本号(我用的小乌龟生成的应该是),点击Git,可看到分支信息,远端分支,远端网址,提交的版本信息(2627c6fb6384cfeedda4…),信息,提交人等,还有配置信息。
    安全里面有修改用户权限的功能。点击编辑,可修改用户对程序的权限等级。
    在这里插入图片描述
    详细信息重点说明,里面有文件名,文件类型,最重要的是文件版本(这个用来给开发者判断当前版本信息至关重要),产品版本(更细致的划分,在文件版本基础上,加入了git的版本号),还有版权,大小,修改日期,语言,原始文件名等。
    点击启动,看到开机启动项,当前程序开机是否启动,以及启动方式:注册表,现在的运行情况等。
    在这里插入图片描述
    点击用户,可看到当前运行的资源占用量。
    在这里插入图片描述
    点击详细信息,在选定的程序中右键,结束进程树,关闭与该进程相关的整个进程结构。设置优先级,设置程序在cpu使用量较多时,先满足此程序的cpu使用量。设置相关性设置允许处理程序的CPU。UAC:用户账户控制,UAC虚拟化功能能够防止标准用户应用程序写入受保护的系统资源位置,这些应用程序将通过虚拟化被重新定向至用户各自的位置。多个用户可操作同一个程序,写入各自的用户空间中。
    服务,点击服务,可查看到windows的服务,点击打开服务,进入服务的详细界面,服务的具体描述和当前状态,启动类型,当前服务状态,启动参数设置等。
    在这里插入图片描述

    小结:这篇文章的出发点,是为了分析程序的详细信息,里面包含了产品版本(git相关)等重要的使得开发可以明确判断的信息,其实为了提高工作方法和效率。

    展开全文
  • 任务管理器-性能中各项的意义

    千次阅读 2012-03-27 10:19:28
    任务管理器-性能中各项的意义 总数:句柄数,线程数,进程数 物理内存(k):总数,可用数,系统缓存,  内存使用:总数,限制,峰值,  核心内存:总数,分页数,未分页,  PF使用 都是什么意思? ...
  • 使用Quartz实现定时任务(包含管理界面)

    万次阅读 多人点赞 2019-01-01 18:43:34
    ")来实现的,至于监控方面的,没有,就是通过在定时任务代码里面打一些日志,特别重要的定时任务,失败了额外发个邮件通知下,人工补偿。然后他又问了下现在需要重构定时任务,你有没有什么想法?然后我就简单的...
  • 【UCOSIII】UCOSIII的任务管理

    千次阅读 2018-06-23 21:16:31
    UCOSIII是多任务系统,那么肯定要能创建任务,创建任务就是将任务控制块、任务堆栈、任务代码等联系在一起,并且初始化任务控制块的相应字段。在UCOSIII中我们通过函数OSTaskCreate()来创建任务,OSTaskCreate()函数...
  • C#暴力屏蔽任务管理器

    千次阅读 2015-11-13 17:14:06
    如果你想让自己的程序任务管理器关闭,最简单的方法就是暴力的将任务管理器屏蔽掉,实现方式是写了一个KillProcess()函数,用来关闭任务管理器进程,用了一个Timer控件,每隔一段时间调用一下KillProcess()函数...
  • windows任务管理器 参数解释

    千次阅读 2013-01-31 21:46:25
    使用任务管理器可以监视计算机性能的关键指示可以查看正在运行的程序的状态,并终止已停止响应的程序。也可以使用多达 15个参数评估正在运行的进程的活动,查看反映 CPU 和内存使用情况的图形和数据。  此外,...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux...
  • 利用任务管理器侦测GDI内存泄露

    千次阅读 2014-04-16 23:11:14
    运行自己的程序,进行各种操作,并查看任务管理器中GDI对象和句柄数的变化。  如果在某次可逆操作中,例如,弹出一个对话框,然后关闭,GDI对象或句柄数先增加了,然后减少了,但是总量还是增加了,说明存在内存...
  • Java框架总结

    万次阅读 多人点赞 2020-01-17 14:14:13
    本系列用来记录常用java框架的基本概念、区别及联系,也记录了在使用过程中,遇到的一些问题的解决方法,方便自己查看,也方便大家查阅。 欲速则不达,欲达则欲速! 一、SSH 1、基本概念 SSH框架是JAVA EE中三种...
  • 转贴 详解任务管理器

    千次阅读 2011-05-08 22:10:00
    使用任务管理器可以监视计算机性能的关键指示可以查看正在运行的程序的状态,并终止已停止响应的程序。也可以使用多达 15个参数评估正在运行的进程的活动,查看反映 CPU 和内存使用情况的图形和数据。 此外,...
  • 怎样通过任务管理器优化电脑速度

    千次阅读 2009-05-12 09:56:00
    打开我们得任务管理器 我们在进程的列表里会看到许许多多的进程,可是具体哪个有用呢 我来一一给大家说明下 1.System windows系统进程,一个重要的进程,权限比计算机管理员还大,要是你想结束它那你就高估你自己了...
  • UCOSIII任务管理

    千次阅读 2016-08-02 15:44:04
    UCOSIII任务管理主要包括下面几个部分: 1.UCOSIII启动和初始化 2.任务状态 3.任务控制块 4.任务堆栈 5.任务就绪表 6.任务调度和切换 UCOSIII启动和初始化 在使用UCOSIII的时候要按照一定的顺序初始化并打开UCOS...
  • 虚拟内存(Virtual Memory)是Windows管理所有可用内存的方式。 对于32位Windows系统,每个进程所用到的虚拟内存地址从0到2^32-1,总容量4GB, 其中2GB是与操作系统以及其他所有进程所共享, ...
  • 如何做好项目管理任务分配

    千次阅读 2017-04-26 14:11:12
    TL;DR 常见项目管理工具介绍 项目管理最重要的内容 谁来撰写以及分配任务 如何有效地分配任务 项目管理工具在我工作的10多年中,使用过不少的项目管理...这里讲哪个工具更优秀,只能说应人而异吧。目前市场上用的
  • Qt 之布局管理器

    万次阅读 多人点赞 2016-05-27 17:43:45
    所有QWidget子类可以使用布局来管理他们的子控件。QWidget::setLayout()函数可以为一个控件布局。当通过这种方式布局以后,它负责以下任务: 布置子控件。 最高层窗口可感知的默认大小。 最高层窗口可感知的最小大小...
  • 人工智能时代,所需要了解人工智能的基本常识

    万次阅读 多人点赞 2018-12-10 22:49:44
    计算机视觉技术运用由图像处理操作及其他技术所组成的序列来将图像分析任务分解为便于管理的小块任务。比如,一些技术能够从图像中检测到物体的边缘及纹理。分类技术可被用作确定识别到的特征是否能够代表系统已知的...
  • 3.任务管理机制

    千次阅读 2017-06-15 14:14:37
    任务管理服务 uC/OS-III 提供了很多与任务相关的函数。这些函数可以在OS_TASK.C 中找到,它们都以以OSTask***()形式命名的。如下 分组 函数 普通的 OSTaskCreate():创建人物 ...
  • 1.同时按住键盘上Ctrl+Alt+Del三个键,选择任务管理器。 2.点击左上角“文件”,点击“运行新任务”,在对话框中输入explorer,选择确定后即可解决问题。 3.如果解决黑屏问题后遇到电脑卡死状态,再次同时按住键盘上...
  • 目录 查看进程 ps top pstree 终止进程 ...定时任务 crond crontab 系统监控 vmstat dmesg free uname lsof 查看进程 ps 命令用途:查看系统进程的状态。 命令语法:ps [选项] 常用选项...
  • 多线程面试题(值得收藏)

    万次阅读 多人点赞 2019-08-16 09:41:18
    史上最强多线程面试47题(含...原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中被其他操作打断,要么就全部都执行。 2)可见性 可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...
  • Linux计划任务与日志管理

    万次阅读 2019-04-22 23:01:44
    计划任务-at-cron-计划任务使用方法 日志的种类和记录方式-自定义ssh服务日志类型和存储位置 实战-日志切割-搭建远程日志收集服务器 实战-配置公司内网服务器每天定时自动开关机 1、计划任务-at-cron-计划任务使用...
  • 禅道-使用禅道来进行项目任务管理

    万次阅读 2018-12-07 10:21:07
       王春生 ...简介:禅道简使用方式就是单纯的项目任务管理,创建项目,分解任务。 一、创建项目 二、设置团队 三、分解任务 四、管理任务 也许您刚刚看到禅道的界面,心里说,哇,这么多...
  • springboot2整合Quartz持久化定时任务管理界面

    万次阅读 多人点赞 2018-10-24 09:50:19
    在默认情况下Quartz将任务调度的运行信息保存在内存中,这种方法提供了最佳的性能,因为内存中数据访问最快。不足之处是缺乏数据的持久性,当程序路途停止或系统崩溃时,所有运行的信息都会丢失 比如我们希望安排一...
  • 使用sql server Management Studio(企业管理器管理数据库sql server数据库中至少包含两个文件——数据库文件和事务日志文件。数据库文件:一个数据库可以有一个或多个数据库文件,一个数据库文件只属于一个数据库...
  • 有的时候会发现在任务管理器里多出了一些进程,但是用任务管理器的“结束进程”却结束了它们,这个时候应该怎么办呢?一是使用另外的一些进程Kill工具,另外一种就是使用Windows自带的命令ntsd了。使用方法也很...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 480,605
精华内容 192,242
关键字:

任务管理器不可以用来