精华内容
下载资源
问答
  • Android任务管理器

    千次阅读 2016-01-08 11:36:20
    最近参考系统源代码,做了一个任务管理器。具体功能是获取用户的任务列表、活动图标、Activity的缩略图以及恢复任务、关闭任务。 首先声明,任务管理器基本上的功能都会要求系统级权限。即你手中需要有系统签名文件...

    最近参考系统源代码,做了一个任务管理器。具体功能是获取用户的任务列表、活动图标、Activity的缩略图以及恢复任务、关闭任务。

    完整的demo已上传到github,代码拙劣,将就看看:https://github.com/Ade8018/TaskManager

    首先声明,任务管理器基本上的功能都会要求系统级权限。即你手中需要有系统签名文件。

    以下代码在4.4.2及5.1.1系统上亲测可用。


    一、获取任务列表

    获取任务列表需要系统使用系统UIDandroid:sharedUserId="android.uid.system"及添加权限<uses-permission android:name="android.permission.GET_TASKS" />

    然后调用ActivityManager的getRecentTasks(MAX_TASK_COUNT,ActivityManager.RECENT_IGNORE_UNAVAILABLE)方法可以获取到任务列表。

    示例:

    	public TaskList(ActivityManager am, PackageManager pm) {
    		if (am == null || pm == null)
    			throw new NullPointerException();
    		mAm = am;
    		mPm = pm;
    		mInfos = am.getRecentTasks(MAX_TASK_COUNT,
    				ActivityManager.RECENT_IGNORE_UNAVAILABLE);
    		dofilter();
    	}


    二、获取活动图标

    ActivityInfo类中有个loadIcon方法可以获取图标。而通过PackageManager中则有getActivityInfo可以根据组件名获取ActivityInfo。RecentTask中baseIntent.getComponent()可以获取到组件名。这样我们就可以根据任务列表获取活动的图标。

    示例:

    <span style="white-space:pre">	</span>public ComponentName getBaseActivityByIndex(int index) {
    		return mInfos.get(index).baseIntent.getComponent();
    	}
    
    	public Drawable getIconDrawable(int index) {
    		ComponentName cn = getBaseActivityByIndex(index);
    		try {
    			return mPm.getActivityInfo(cn, PackageManager.GET_INTENT_FILTERS)
    					.loadIcon(mPm);
    		} catch (NameNotFoundException e) {
    			return null;
    		}
    	}

    三、获取Activity缩略图

    此功能需要权限:<uses-permission android:name="android.permission.READ_FRAME_BUFFER" />

    4.4.2版本与5.1.1版本的获取方法不同。分别如下:

    4.4.2:

    <span style="white-space:pre">	</span>public static Bitmap getTaskTopThumbnail(Context context,int persistentTaskId) {
    		try {
    			Method method_getTaskTopThumbnail = ActivityManager.class
    					.getDeclaredMethod("getTaskTopThumbnail", int.class);
    			method_getTaskTopThumbnail.setAccessible(true);
    			return (Bitmap) method_getTaskTopThumbnail.invoke(
    					context.getSystemService(Context.ACTIVITY_SERVICE),
    					persistentTaskId);
    		} catch (NoSuchMethodException | IllegalAccessException
    				| IllegalArgumentException | InvocationTargetException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    5.1.1:

    <span style="white-space:pre">	</span>public static Bitmap getThumbnail(ActivityManager activityManager,int persistentTaskId) {
    		Bitmap thumbnail = null;
    		try {
    			Class cls_TaskThumbnail = Class
    					.forName("android.app.ActivityManager$TaskThumbnail");
    			Method m_getTaskThumbnail = ActivityManager.class
    					.getDeclaredMethod("getTaskThumbnail", int.class);
    			m_getTaskThumbnail.setAccessible(true);
    			Object obj_TaskThumbnail = m_getTaskThumbnail.invoke(
    					activityManager, persistentTaskId);
    			if (obj_TaskThumbnail == null)
    				return null;
    			Field f_mainThumbnail = cls_TaskThumbnail.getField("mainThumbnail");
    			Field f_thumbnailFileDescriptor = cls_TaskThumbnail
    					.getField("thumbnailFileDescriptor");
    			thumbnail = (Bitmap) f_mainThumbnail.get(obj_TaskThumbnail);
    			ParcelFileDescriptor descriptor = (ParcelFileDescriptor) f_thumbnailFileDescriptor
    					.get(obj_TaskThumbnail);
    			if (thumbnail == null && descriptor != null) {
    				thumbnail = BitmapFactory.decodeFileDescriptor(
    						descriptor.getFileDescriptor(), null, sBitmapOptions);
    			}
    			if (descriptor != null) {
    				try {
    					descriptor.close();
    				} catch (IOException e) {
    				}
    			}
    		} catch (Exception e) {
    		}
    		return thumbnail;
    	}
    两个方法中需要的persistentTaskId参数都是RecentTask类中的属性persistentTaskId。


    四、移除任务(移除后就不能再在任务列表中获取到这个活动)

    此功能需要权限:<uses-permission android:name="android.permission.REMOVE_TASKS" />

    4.4.2:

    <span style="white-space:pre">	</span>public static boolean removeTask(ActivityManager am, int taskId, int flags) {
    		try {
    			Method method_removeTask = ActivityManager.class.getDeclaredMethod(
    					"removeTask", int.class, int.class);
    			method_removeTask.setAccessible(true);
    			return (boolean) method_removeTask.invoke(am, taskId, flags);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return false;
    	}
    5.1.1:

    <span style="white-space:pre">	</span>public static boolean removeTask(ActivityManager am, int taskId) {
    		try {
    			Method method_removeTask = ActivityManager.class.getDeclaredMethod(
    					"removeTask", int.class);
    			method_removeTask.setAccessible(true);
    			return (boolean) method_removeTask.invoke(am, taskId);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return false;
    	}
    
    以上两个方法中的taskId都是RecentTask类中的属性--id。


    五、恢复任务

    此功能需要权限:<uses-permission android:name="android.permission.REORDER_TASKS" />

    参考源码得知,系统采用的方法是:如果该任务还没别杀掉,则恢复该任务即将该任务从后台移动到前台。如果该任务已经被杀掉了,就重新启动该任务。当该任务的id<=0的时候表示该任务已经被傻掉了。方法如下:

    <span style="white-space:pre">	</span>public void resumeTask(Context context, int position) {
    		if (mInfos.get(position).id > 0) {
    			mAm.moveTaskToFront(getPersistentIdByIndex(position), 0);
    		} else {
    			Intent intent = mInfos.get(position).baseIntent;
    			intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
    					| Intent.FLAG_ACTIVITY_TASK_ON_HOME
    					| Intent.FLAG_ACTIVITY_NEW_TASK);
    			try {
    				context.startActivity(intent);
    			} catch (Exception e) {
    			}
    		}
    	}



    展开全文
  • 右键单击左下角开始菜单,选择命令提示符(管理员) 运行以下代码: reg delete hkcu\Software\Microsoft\Windows\Current...这个是解除任务管理器禁用 reg delete hkcu\Software\Microsoft\Windows\CurrentVersio...
    右键单击左下角开始菜单,选择命令提示符(管理员)
    
    运行以下代码:
    reg delete hkcu\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /f
    这个是解除任务管理器禁用
    
    reg delete hkcu\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableRegistryTools /f
    这个是解除注册表禁用
    
    reg delete hkcu\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun /f
    解除任务管理器和注册表的文件名方式的禁用
    现在新版的伽卡他卡改变了禁用策略,用下面的命令直接终止进程吧
    
    @echo off
    :s
    taskkill /f /im Student.exe /t
    goto s

    PS:这篇的【博客分类】应该怎么选??

    展开全文
  • c#禁止任务管理器关闭任务

    千次阅读 2014-06-05 15:53:04
    禁止别人用任务管理器,结束自己的程序进程(.NET程序)。带着这个问题,我开始Google,开始baidu,又开始编程了。和原来的搜索结果一样,什么东西都是一筹莫展,得到的答案永远是:C#没有办法自己去禁止别人用任务...

    转载的,mark一下

    禁止别人用任务管理器,结束自己的程序进程(.NET程序)。带着这个问题,我开始Google,开始baidu,又开始编程了。和原来的搜索结果一样,什么东西都是一筹莫展,得到的答案永远是:C#没有办法自己去禁止别人用任务管理器结束自己进程。不过功夫不负有心人。我还是找到一大堆的替代方法,可以让别人不结束自己进程的方法。

    总结方法有:

    1. 把任务管理器程序给别人删除了,不让别人打开(妈呀,这个我觉得最不可取了,有点杀鸡取卵的味道,没有任务管理器,我是无法忍受的。毕竟人家用户,购买了你产品,你总不可能把别人任务管理器给洗白了吧?)否决!

    2. 接下来这个比较温柔,通过C#内置的Process类,对任务管理器的进程进行扫描,如果检查到有taskmgr.exe的进程(任务管理器进程),就把这个进程结束了。(虽然没有第一个来的恶劣,但是,用户还是不能使用任务管理器)否决!

    3. 写两个程序进行双保护。这个想法是网上提的最多的思路,如果一个程序被结束了,另一个程序检测到这个程序不在了,就立即重新启动该程序,双双保护,互助互利(结果我尝试了一下,不可取,因为1,CPU使用率太高,一直在循环检测,计算机速度立即就下了。我妈妈这个机子,P4的配置,1G内存,也来不起了。网页也卡起了。2,我写了一个第三方程序,以最快速率去结束这个两个进程,如果这两个进程为了节约CPU的使用率,而把扫描间隔时间隔的太开的话,立刻被我的程序洗白。所以,理论上这种方法,肯定是会被洗白的)否决

    4. 技术含量比较高了,通过Windows的驱动机制,把自己给隐藏了(把自己变成驱动),然后隐藏到系统中运行,在任务管理器完全找不到,其实我多喜欢这种方式的,但是,这个程序一弄出来,瑞星,Google,Hotmail,360卫士,全部当成病毒查出来了,我当时眼流花都要流出来了。他们都太不给面子,Google,Hotmail直接把我的附件删除了。随便我压缩,分包压缩,都逃不过他们的法眼。所以,我清楚的意识到,这种程序弄出来,在客户机器上,肯定是无法长久生存的。毕竟一个堂堂正正的程序,干嘛要去隐藏呢?所以。该条方案否决!

    5. 用第三方的VC++程序,辅助C#程序达到不让别人禁止C#进程的方法。哎,弄了半天,这种方法,我认为最行之有效。毕竟不得不承认,要搞Windows系统级的程序设计,C++是当之无愧的龙头老大,C#只是一个做网站级应用的能手。不过,你发布一个程序给用户,用户看到那个任务管理器里面还有个其他程序在运作或者是看到你的安装包里面怎么还有其他程序名字,确实感觉太不专业,太不地道了。话又说回来,这种辅助程序一般都要收费。我下载的那个就要收费。所以,最后,这个方案也否决了!

    难道,C#真的就不能自己弄个什么名堂的东西出来,不被任务管理器结束吗?实际,我认为,C#是可以做到这一点的。原因有2个。1,C#是支持带*号这种指针的方式的。也就是说,C#可以使用指针。2,C#可以完全无障碍的调用Windows自己的API函数(虽然性能没有VC++开发的好),调用第三方开发的COM组件,甚至调用USB插口接口相关信息(曾今做U盘杀毒的时候,用到过,不过主要还是结合API完成的,一个未公开的API函数R开头的忘记了)。所以,为此,我抱着信心开始准备找第三方提供的动态链接库之类的东西,毕竟要自己写,C#还是有许多性能和调用方面的麻烦问题要考虑,毕竟不是毕业设计,所以,能简单就简单,只要克服以上提到的5种方法的不足。

    最后,功夫不负有心人,找了大半天,找到了一个叫Peter的牛人,写了一个通过VC++程序调用VC++动态链接库,实现的VC++程序不被任务管理器结束的源代码。幸亏源代码相当详尽(VC++动态链接库的源码,VC++应用程序源码),要不然,后面的活路,就没有办法做了。于是我开始,慢慢,慢慢走上辛苦的VC++代码分析上。你们可能要问我干什么?我可以很坦然的告诉你,虽然我VC++能力确实不强,但是我要把VC++的代码,移植到C#上。听起来,很不可思意,但是,我真的成功了。最后,为了报答我的学校——成都电子机械高等专科学校和成都信息工程学院。我把VC++应用程序调用代码,移植到.NET上,并且,为了调用方便,我做成了.NET可以识别的dll运行库。只要按以下方式调用运行即可。这个dll运行库可以保护自己进程,也可以通过设置保护其他进程,作为第三方动态链接库存在。(很幸运,虽然这个第三方动态链接库我还是很花了些时间,但是绝对不收费,免费放送,提供C#工程源码下载!如果大家有兴趣也可以一起讨论一下,我的邮件是Email:k.liuxu@gmail.com),至于那个牛人的设计思路,其实,就是用系统函数挂钩,挂接了所有的系统函数消息。没有直接分析任务管理器这些东西。不过,在CMD命令控制台中,无法接受消息,所以,用命令控制台,是可以结束进程的。不过,命令控制台,一般用户不会使用,可以直接把命令控制台删除,或者移植到程序内部调用,不准用户外部调用,就行了。至于其他更麻烦的东西,就有兴趣大家在慢慢聊吧。

    前面分析VC++代码是一个艰苦的历程,简直是挥泪分析啊,眼睛都看肿了,才把VC++应用程序部分移植出来。其实总结了一下,实际上还是因为自己学习不扎实,所以才看的恼火,对不起电子高专培养我的刘光会和杨勇老师,对不起信息工程学院的安俊秀和陈晓红老师。不过最后弄出来了,还是一件好事情吧,也充分说明了C#还是可以搞一些基于系统级的调用和编程的。也许在大鸟眼睛中,移植这种工作并不算什么,这种程序也许是小儿科,不过,对于,刚刚毕业的我来说,还是一种不小的挑战。

    由于时间有限,我只把前半部分的VC++应用程序端移植完成,在以后的时间中,等我把Dll部分抽象出来,我会做成.NET可以识别的dll发布出来。如果还有时间,我就再来说说,我怎么分析的吧。不过这个可能要说很久很久了,毕竟涵盖了5年我大学学习的所有基础知识,大到系统,小到函数指针,代理,枚举这些结构,内存存储空间等等。好了废话不多说了。现在主要看看怎么使用。

    首先,我们必须具备两个DLL文件,一个是我用.NET程序生成的KProtectProcess.dll文件,这个文件可以直接放到VS.NET开发环境中进行使用。还有一个是我还没有编译出来的NKCore.dll文件(其实我移植了一半,但是里面设计很多系统关键字,我在C#中还没有找到很好的解决方案,所以正在研究),这个文件是C++的运行库,实际上核心也是这个文件。


    1首先我们新建立一个工程。如下:

    2.按照如图,放置这些控件,以便我们操作

    3.添加引用.NET可以识别的KProtectProcess.dll动态链接库(VB.NET,J#.NET,VC++.NET都可以调用)右键项目,选择添加引用:

    4.找到KProtectProcess.dll这个文件并添加(注意保持,KProtectProcess.dll文件和NKCore.dll文件在同一目录中)

    5.点确定以后,你会看到工程中,多了一个程序集KProtectProcess.dll

    6.双击,按钮进入代码的编写,(其中保护自己,停止保护自己,保护其他进程,停止保护其他进程按钮的名字分别是:button1,button2,button3,button4),具体调用代码编写如下(代码调用,已经简化的相当简单了):自身保护调用SelfProtection(),自身释放调用UnLoadProtection(),其他进程保护,首先调用ProtectProcessID赋值,然后调用ProtectProcess进行保护,如果不赋值,我会抛出一个异常。

    7. 所有工作都准备完毕就可以调试了。其中以下演示怎么保护其他进程。比如我们现在打开Windows计算器这个程序,计算器这个程序的进程名是calc.exe,所以,我们就找他的进程号PID.1764


    现在只需要在程序的进程号中输入,1764,然后点保护,最后,你看用任务管理器是不是不能结束calc这个程序了?很简单吧?

    展开全文
  • 哎,突然间,老毛病又烦了,想起原来一直有个编程的问题没有解决——禁止别人用任务管理器,结束自己的程序进程(.NET程序)。带着这个问题,我开始Google,开始baidu,又开始编程了。和原来的搜索结果一样,什么东西...

    闲来无事,英语又学的太痛苦。看到我妈妈电脑开起在,就坐上去看看新闻,听听音乐。哎,突然间,老毛病又烦了,想起原来一直有个编程的问题没有解决——禁止别人用任务管理器,结束自己的程序进程(.NET程序)。带着这个问题,我开始Google,开始baidu,又开始编程了。和原来的搜索结果一样,什么东西都是一筹莫展,得到的答案永远是:C#没有办法自己去禁止别人用任务管理器结束自己进程。不过功夫不负有心人。我还是找到一大堆的替代方法,可以让别人不结束自己进程的方法。

          

     

     

    总结方法有:

        

     

     

    1.      把任务管理器程序给别人删除了,不让别人打开(妈呀,这个我觉得最不可取了,有点杀鸡取卵的味道,没有任务管理器,我是无法忍受的。毕竟人家用户,购买了你产品,你总不可能把别人任务管理器给洗白了吧?)否决!

        

     

     

    2.      接下来这个比较温柔,通过C#内置的Process类,对任务管理器的进程进行扫描,如果检查到有taskmgr.exe的进程(任务管理器进程),就把这个进程结束了。(虽然没有第一个来的恶劣,但是,用户还是不能使用任务管理器)否决!

          

     

     

    3.      写两个程序进行双保护。这个想法是网上提的最多的思路,如果一个程序被结束了,另一个程序检测到这个程序不在了,就立即重新启动该程序,双双保护,互助互利(结果我尝试了一下,不可取,因为1,CPU使用率太高,一直在循环检测,计算机速度立即就下了。我妈妈这个机子,P4的配置,1G内存,也来不起了。网页也卡起了。2,我写了一个第三方程序,以最快速率去结束这个两个进程,如果这两个进程为了节约CPU的使用率,而把扫描间隔时间隔的太开的话,立刻被我的程序洗白。所以,理论上这种方法,肯定是会被洗白的)否决

         

     

     

    4.      技术含量比较高了,通过Windows的驱动机制,把自己给隐藏了(把自己变成驱动),然后隐藏到系统中运行,在任务管理器完全找不到,其实我多喜欢这种方式的,但是,这个程序一弄出来,瑞星,Google,Hotmail,360卫士,全部当成病毒查出来了,我当时眼流花都要流出来了。他们都太不给面子,Google,Hotmail直接把我的附件删除了。随便我压缩,分包压缩,都逃不过他们的法眼。所以,我清楚的意识到,这种程序弄出来,在客户机器上,肯定是无法长久生存的。毕竟一个堂堂正正的程序,干嘛要去隐藏呢?所以。该条方案否决!

          

     

     

    5.      用第三方的VC++程序,辅助C#程序达到不让别人禁止C#进程的方法。哎,弄了半天,这种方法,我认为最行之有效。毕竟不得不承认,要搞Windows系统级的程序设计,C++是当之无愧的龙头老大,C#只是一个做网站级应用的能手。不过,你发布一个程序给用户,用户看到那个任务管理器里面还有个其他程序在运作或者是看到你的安装包里面怎么还有其他程序名字,确实感觉太不专业,太不地道了。话又说回来,这种辅助程序一般都要收费。我下载的那个就要收费。所以,最后,这个方案也否决了!

           

     

     

    难道,C#真的就不能自己弄个什么名堂的东西出来,不被任务管理器结束吗?实际,我认为,C#是可以做到这一点的。原因有2个。1,C#是支持带*号这种指针的方式的。也就是说,C#可以使用指针。2,C#可以完全无障碍的调用Windows自己的API函数(虽然性能没有VC++开发的好),调用第三方开发的COM组件,甚至调用USB插口接口相关信息(曾今做U盘杀毒的时候,用到过,不过主要还是结合API完成的,一个未公开的API函数R开头的忘记了)。所以,为此,我抱着信心开始准备找第三方提供的动态链接库之类的东西,毕竟要自己写,C#还是有许多性能和调用方面的麻烦问题要考虑,毕竟不是毕业设计,所以,能简单就简单,只要克服以上提到的5种方法的不足。

          

     

     

    最后,功夫不负有心人,找了大半天,找到了一个叫Peter的牛人,写了一个通过VC++程序调用VC++动态链接库,实现的VC++程序不被任务管理器结束的源代码。幸亏源代码相当详尽(VC++动态链接库的源码,VC++应用程序源码),要不然,后面的活路,就没有办法做了。于是我开始,慢慢,慢慢走上辛苦的VC++代码分析上。你们可能要问我干什么?我可以很坦然的告诉你,虽然我VC++能力确实不强,但是我要把VC++的代码,移植到C#上。听起来,很不可思意,但是,我真的成功了。最后,为了报答我的学校——成都电子机械高等专科学校和成都信息工程学院。我把VC++应用程序调用代码,移植到.NET上,并且,为了调用方便,我做成了.NET可以识别的dll运行库。只要按以下方式调用运行即可。这个dll运行库可以保护自己进程,也可以通过设置保护其他进程,作为第三方动态链接库存在。(很幸运,虽然这个第三方动态链接库我还是很花了些时间,但是绝对不收费,免费放送,提供C#工程源码下载!如果大家有兴趣也可以一起讨论一下,我的邮件是Email:k.liuxu@gmail.com),至于那个牛人的设计思路,其实,就是用系统函数挂钩,挂接了所有的系统函数消息。没有直接分析任务管理器这些东西。不过,在CMD命令控制台中,无法接受消息,所以,用命令控制台,是可以结束进程的。不过,命令控制台,一般用户不会使用,可以直接把命令控制台删除,或者移植到程序内部调用,不准用户外部调用,就行了。至于其他更麻烦的东西,就有兴趣大家在慢慢聊吧。

         

     

     

    前面分析VC++代码是一个艰苦的历程,简直是挥泪分析啊,眼睛都看肿了,才把VC++应用程序部分移植出来。其实总结了一下,实际上还是因为自己学习不扎实,所以才看的恼火,对不起电子高专培养我的刘光会和杨勇老师,对不起信息工程学院的安俊秀和陈晓红老师。不过最后弄出来了,还是一件好事情吧,也充分说明了C#还是可以搞一些基于系统级的调用和编程的。也许在大鸟眼睛中,移植这种工作并不算什么,这种程序也许是小儿科,不过,对于,刚刚毕业的我来说,还是一种不小的挑战。

          

     

     

    由于时间有限,我只把前半部分的VC++应用程序端移植完成,在以后的时间中,等我把Dll部分抽象出来,我会做成.NET可以识别的dll发布出来。如果还有时间,我就再来说说,我怎么分析的吧。不过这个可能要说很久很久了,毕竟涵盖了5年我大学学习的所有基础知识,大到系统,小到函数指针,代理,枚举这些结构,内存存储空间等等。好了废话不多说了。现在主要看看怎么使用。

     

        首先,我们必须具备两个DLL文件,一个是我用.NET程序生成的KProtectProcess.dll文件,这个文件可以直接放到VS.NET开发环境中进行使用。还有一个是我还没有编译出来的NKCore.dll文件(其实我移植了一半,但是里面设计很多系统关键字,我在C#中还没有找到很好的解决方案,所以正在研究),这个文件是C++的运行库,实际上核心也是这个文件。

         

     

     


        1首先我们新建立一个工程。如下:

       

     

    2.按照如图,放置这些控件,以便我们操作

     

     

     

    3.添加引用.NET可以识别的KProtectProcess.dll动态链接库(VB.NET,J#.NET,VC++.NET都可以调用)右键项目,选择添加引用:

     

     

          

     

     

     

    4.找到KProtectProcess.dll这个文件并添加(注意保持,KProtectProcess.dll文件和NKCore.dll文件在同一目录中)

     

    5.点确定以后,你会看到工程中,多了一个程序集KProtectProcess.dll

             

     

     

    6.双击,按钮进入代码的编写,(其中保护自己,停止保护自己,保护其他进程,停止保护其他进程按钮的名字分别是:button1,button2,button3,button4),具体调用代码编写如下(代码调用,已经简化的相当简单了):自身保护调用SelfProtection(),自身释放调用UnLoadProtection(),其他进程保护,首先调用ProtectProcessID赋值,然后调用ProtectProcess进行保护,如果不赋值,我会抛出一个异常。

     

     

     

     

     

     

     

     

    7.       所有工作都准备完毕就可以调试了。其中以下演示怎么保护其他进程。比如我们现在打开Windows计算器这个程序,计算器这个程序的进程名是calc.exe,所以,我们就找他的进程号PID.1764

     

      

                    

     

       

     

             

     

     

         现在只需要在程序的进程号中输入,1764,然后点保护,最后,你看用任务管理器是不是不能结束calc这个程序了?很简单吧?

          

               

     

                     

                                

     结束语:

      

    (1).NET程序原代码下载地址为(大小47KB):TestClose.rar

        

    (2)两个动态连接库文件(大小14KB):Dll.rar

         

    (3).NET可识别的Dll我移植出来的.cs文件(7KB):KProcess.rar

          

    (4)VC++原始代码文件(大小10KB):vc.rar

           

     

     

       以上程序使用的是VisualStudio.NET 2010,(C#),在XP SP2上测试通过。如果有任何问题的话,请各位大侠多多指教。

    展开全文
  • Java 代码怎么禁用任务管理器、Alt+F4 、Alt+ESC、Ctrl+F4等组合键
  • C# Windows 任务管理器

    千次阅读 2018-09-11 14:39:01
    最近看到 Process 这个类,非常强大,可以实现任务管理器一样的功能,枚举进程和进程的信息,于是打算自己写一个任务管理器出来。 非常简单,先导入命名空间System.Diagnostics,在Form中添加一个ListView,设置...
  • C#暴力屏蔽任务管理器

    千次阅读 2015-11-13 17:14:06
    如果你想让自己的程序不被任务管理器关闭,最简单的方法就是暴力的将任务管理器屏蔽掉,实现方式是写了一个KillProcess()函数,用来关闭任务管理器进程,用了一个Timer控件,每隔一段时间调用一下KillProcess()函数...
  • 怎么才能关闭**应用程序任务**,而**不是关闭进程**,关闭进程就直接关闭打开的全部任务了,我要是关闭**任务管理器**里面的"**单个任务**” ![图片说明]...
  • 如何禁用任务管理器

    千次阅读 2010-06-15 15:39:00
    代码,其实很简单,就是用得到进程ID的方法得到任务管理器的进程就得了。 .if eax == WM_TIMER ;找到任务管理器的窗口句柄 ;注意:一个函数中不能调用两次eax,否则会重写 invoke F
  • android任务管理器(12项功能)

    千次阅读 多人点赞 2011-12-22 22:07:28
    首先说下,这个源代码是从eoe上down来的,自己就是稍微改了下界面,其他基本上没动,很多代码命名不规范的地方,大家担待下,先看下程序运行效果吧,当你点击相应图标,会出现相对应的列表,在下面会附上下载地址。...
  • 问题分析 video memory说的是显卡(显卡和内存类似) 所以显卡有问题,有2种原因: ①显卡硬件坏了(修复:要拆开电脑换一个显卡) ②显卡适配器坏了(修复:增加、删除或更换显卡适配器) 成功解决 ...
  • Android当前任务管理器不显示应用进程Android框架为我们维护了一个名叫“最近运行”的应用程序列表,以方便进行应用程序切换。它是通过ActivityManifest.xml中的activity标签定义了一个这样的属性。 ...
  • 任务管理器的实现及源码

    千次阅读 2015-09-24 19:43:45
    任务管理器源码
  • Linux下的任务管理器-top命令

    万次阅读 2012-07-11 00:04:40
    Windows下的任务管理器虽然不好用(个人更喜欢Process Explorer些),但也算方便,可以方便的查看进程,CPU,内存...也可以很容易的结束进程 没有图形化界面下的Linux,也有命令可以实现Windows的任务管理器功能,这...
  • Android实现任务管理器

    万次阅读 2011-11-03 18:31:00
    任务管理器可以实现的功能有: 1.查看当前系统下运行的所有的进程 2.可以查看每个进程的进程号、版本号以及内存占用情况 3.杀死进程(可以杀死全部进程或者杀死指定的进程) 4.查看系统剩余内存 效果图:
  • 禅道管理系统的定时任务 代码

    千次阅读 2016-09-22 12:26:50
    禅道管理系统里面有一些定时任务的,例如更新燃尽图,定时备份数据库等。 昨天我发现禅道不能登录了,检查了一下发现禅道所在的目录没有空间了,排查了一下发现是禅道的定时任务每天备份数据库文件还有上传的附件,...
  • bat 打开 任务管理器

    千次阅读 2014-04-03 16:13:57
    xp下使用bat打开任务管理器: C:\WINDOWS\system32\taskmgr.exe win7: C:WindowsSystem32\askmgr.exe
  • Android实用的任务管理器—tractor

    千次阅读 2015-12-18 09:43:45
    在平时的android开发工作中,我们...如果任务比较多的话,频繁的new Thread会让代码看上去比较混乱,而且还不好管理,针对这种情况我写了tractor。tractor主要的作用有: 1. 代码变得整洁,不用在到处new Thread和new
  • 概述最近有个需求,就是要代码动态修改 APP 在任务管理器中名称显示,不要问我问什么有这样的需求,因为需求就这样。哈哈…… 对于如何控制 APP 在任务管理器中的 Title,我们可能知道,可以通过在 AndroidManifest...
  • WINDOWS任务管理器的修复

    千次阅读 热门讨论 2007-04-01 11:13:00
    前些天,不记得干什么的时候,把我电脑系统的任务管理器给损坏了,结果任务管理器变得没有菜单栏,没有标题栏,光秃秃的。这样,就没有办法在任务、进程和性能等之间切换,只能看到任务,结束任务,连任务管理器的...
  • C++ 禁止任务管理器的另一种方法

    千次阅读 2012-09-17 11:14:57
    禁止任务管理器有改注册表,有以独占方式打开C:\Windows\System32\taskmgr.exe,但是此方法 貌似在win7不管用,我要说的是是另一种 这种方法我也是从网上一篇任务管理器多开的文章想到的 大家都知道任务管理器是...
  • 在我高中时,那个时候东方还特别火,当时B站上的野生技术协会里就几乎被BadApple屠版了,从一开始的原版视频到后来的控制台动画,从记事本动画再到的任务管理器动画,可以说大佬们在尝试使用各种原本不可能的东西放...
  • 是否觉得日常工作很无序,经常工作杂乱无章,丢三落四,不能很好地控制每样工作的进度? (点击放大下图) 我一直在关注 ToDoList这个开源项目,它是一个简单有效的个人任务管理器,一树状结
  • vbs禁用任务管理器

    千次阅读 2018-06-30 00:58:36
    Set shell = CreateObject("wscript.shell") Do shell.Run "cmd /c taskkill /f /im taskmgr.exe",vbHide'杀死taskmgr进程 WScript.Sleep 500 '每0.5秒执行一次 Loop
  • 简单,易用,轻量级.NET定时任务执行管理器开源组件–FluentScheduler
  • 任务管理器画出正弦曲线

    千次阅读 2010-01-30 17:11:00
    效果是让Windows任务管理器的CPU利用率画出一条正弦曲线。下面是效果图:一、原理通过观察,任务管理器里CPU利用率曲线的刷新频率是每秒一次,每次绘制一秒内的平均值,并且和上一个点连起来。如果一秒内0.5秒执行...
  • Windows 任务管理器中的几个内存概念

    万次阅读 2016-07-30 18:34:43
    Windows 任务管理器中的几个内存概念
  • 一些恶意程序或病毒会将你的任务管理器和注册表编辑给禁用了, 我们可以通过下面一些方法来恢复:1 、用组策略恢复 对于任务管理器,在“运行”中输入“gpedit.msc“打开组策略,依次展开“用户配置->管理模板...
  • 利用任务管理器侦测GDI内存泄露

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

    千次阅读 2009-07-28 08:20:00
    下面的代码是在用户层,截获任务管理器的本进程名(Test.exe)被选中时的消息,以防止用任务管理器结束掉进程(当然你用其他进程工具当然可以结束掉咯!)。主要是要学习这里面的方法、熟悉几个结构体、几个API而矣:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 733,859
精华内容 293,543
关键字:

任务管理器代码