Java恶搞!强制关闭电脑上的程序进程!
效果
最近写代码经常和各种进程打交道,发现了一个很有意思的黑科技。
我直接说有什么用吧,可以设置每隔多少时间检查某个程序是否在使用,如果在用,就强制关闭。比如,有的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恶搞!强制关闭电脑上的程序进程!的更多相关文章
- 64位电脑上启动程序出现丢失MSVCR110.dll的解决办法
启动程序报错如下: 无法启动此程序,因为计算机中丢失MSVCR110.dll.尝试重新安装该程序以解决此问题. 应该很容易就搜索到,缺少这样的dll文件,是没有安装Visual C++ Redistr ...
- 如何使用adb工具在电脑上使用程序的方式操控自己的android手机
在电脑安装adb工具: sudo apt install android-tools-adb android-tools-fastboot# 检查是否成功adb version 开启adb服务 sud ...
- Ubuntu上用快捷键关闭没有响应的程序
Linux 上有很多方法可以强制关闭无响应的程序,比如你可以通过按快捷键 Ctrl + Shift + T 来调出 Terminal 或者用 Ctrl + Shift + F1 进入 Console ...
- Macbook怎么强制关闭后台程序?Macbook强制关闭后台程序的方法
有时候我们的Macbook电脑运行某个程序卡在那里耗了很长时间,程序本身有可能提供了取消按钮,点了也没有反应,这时候我们就很想强制关闭它了,那么Macbook怎么强制关闭后台运行的程序呢?下面完美小编 ...
- Android强制关闭某个指定应用 “关闭应用”
强制关闭指定的应用程序: // 传入应用的包名即可kill掉应用 private void forceStopApp(String packageName) { ActivityManager am ...
- java程序在没有java环境的电脑上执行的方法(关键词jar,exe)
可以让你写的java程序在别人没有任何java配置以及环境的情况下执行 写好程序 在程序对应的package上右键->export->java->Runnable JAR file- ...
- java程序怎么在一个电脑上只启动一次,只开一个进程
目录 <linux文件锁flock> <NIO文件锁FileLock> <java程序怎么在一个电脑上只启动一次,只开一个进程> 方案1: 单进程程序可以用端口绑定 ...
- 如何在一台新电脑上配置JAVA开发环境
对于JAVA新手来说,刚开始要学JAVA,而自己的电脑上毫无与JAVA开发有关的环境,应该如何进行配置呢? (安卓新手也需要JAVA开发环境) 第一步,下载.安装java JRE JRE (Java ...
- 在mac电脑上创建java的一些简单操作
首先你要在电脑上下载一个JDK创造出一个java环境 如下第二个: 然后步奏如下: step1:苹果->系统偏好设置->最下边点MySQL 在弹出页面中 关闭mysql服务(点击stop ...
随机推荐
- 例题 3-5 生成元 digit generator
#include<stdio.h> #include<string.h> #define maxn 100005 int ans[maxn]; //类似于 比较大的数组还是开导 ...
- tableView 加载更多
在ios开中中,由于屏幕尺寸限制,如果需要显示的数据很多,需要用到分页加载. 原理:先数据放到一个table中,先显示10条,table底部有一察看更多选项,点击察看更多查看解析的剩余数据.基本上就是 ...
- SSH的安装及使用
ssh(secure shell--加密远程登录管理服务器) ,是一种安全的传输协议,主要用于给远程登录会话的数据进行加密,保证数据传输的安全.Ubuntu客户端可以通过SSH访问远程服务器.SSH的 ...
- 组合游戏 - SG函数和SG定理
在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点 ...
- Windows7运行无法记录历史命令问题解决
Windows7运行无法记录历史命令,每次都需要手动敲命令,解决方法如下: 1.任务栏中右键,选择"属性"菜单: 2.在弹出框中的"[开始]菜单"选项卡的隐私区 ...
- 窗体WINFORM
窗体的事件:删除事件:先将事件页面里面的挂好的事件删除,再删后台代码里面的事件 Panel是一个容器 1.Label -- 文本显示工具Text:显示的文字取值.赋值:lable1.Text 2.Te ...
- e.Row.RowType == DataControlRowType.DataRow详解(转)
代码语句如下: protected void OnRowCreate(object sender, GridViewRowEventArgs e) { if (e.Row.RowT ...
- Prim算法以及Kruskal算法
Prim算法主要用于计算最小生成树.算法在选取最小路径的时候需要优化,算法思路:从某个顶点开始,假设v0,此时v0属于最小生成树结点中的一个元素,该集合假设V,剩下的点待选择的点为U,然后找寻V中的点 ...
- Java语法基础-序列化
33. Java序列化中如果有些字段不想进行序列化,怎么办? 答:对于不想进行序列化的变量,使用transient关键字修饰. transient关键字的作用是:阻止实例中那些用此关键字修饰的的变量序 ...
- 简说JAVA8引入函数式的问题
JAVA8中加入lambda演算是一个令人兴奋的新特性——虽然这个新特性来得太迟了,目前的主流开发语言中,JAVA似乎是最后一个支持函数式思维的语言. 虽然晚了点,但总比没有好——况且我认为它的实现还 ...