c#进程、定时器初步学习
首先是什么原因让我做这个小项目的呢,是因为在知乎里看到的游侠的文章才尝试着自己做的,文章地址是:https://www.zhihu.com/question/48811975
开始做的时候我是照着文章的界面去设计的,界面差不多是这样子:
然后具体说一说我遇到的问题吧,
首先是进程的问题:做这个小工具主要是为了关闭英雄联盟客户端,所以首先是怎么获取本机正在运行的进程,废话不多说,直接贴代码:
public void Process1(object sender, EventArgs e)
{
string name = "LeagueClient";
Process[] process = Process.GetProcesses();
for (int i = 0; i < process.Length; i++)
{
if (process[i].ProcessName == name)
{
process[i].Kill();
MessageBox.Show("已经关闭英雄联盟,请在规定时间内不要打开");
}
}
if (t.AutoReset == false)
{
MessageBox.Show("时间到,现在可以打开英雄联盟了,但是要适度玩游戏哦!");
}
}
其实网上的例子大把,只需要搜索process 获取进程关键字就ok,这里我用的是局部变量传进程的名称
然后是我们要在一段时间内让进程不断的被杀,当我们点击button后,在一段时间内,英雄联盟不能启动,所以这里就要用到timer这个控件了
在button按钮里的代码如下:
public void button1_Click(object sender, EventArgs e)
{ tt.Start();
if (textBox1.Text == "")
{
MessageBox.Show("请输入要屏蔽的时间");
}
else if (int.Parse(textBox1.Text) < 60)
{
MessageBox.Show("时间必须大于60");
}
else
{
label1.Text = "00";
label7.Text = "00:00"; t.Elapsed += new System.Timers.ElapsedEventHandler(Process1);//到达时间自动执行Process1方法
t.AutoReset = true;//设置执行t.Elapsed += new System.Timers.ElapsedEventHandler(Process1);这个是执行一次(false)还是一直执行(true)
t.Enabled = true;//启用elapsed事件(true),关闭elapsed事件(false) } }
再然后就是timer1_Tick事件了,在这个方法里,我开始是栽了很多的跟头的,首先遇到的问题是给label赋值问题,会报一个进程错误,然后这个错误有两种解决方法:
第一种是在这里加上CheckForIllegalCrossThreadCalls = false;这么一句,就不会出现上面的问题了,在有一种是比较高深的,我也只是明白了一点点:声明一个委托,然后invoke:
这个的意思就是异步调用,使用委托去执行你需要执行的方法,就是把方法当作一个参数传递,其他不多说了,自行百度
这里我要提醒我自己一下:论全局声明和局部声明的重要性。要知道这个问题可是耗费了我一个上午的时间。
这里再说下我们想要做到计时效果的话,就是实时显示时间,首先是需要设置一下timer的Interval的属性,单位是毫秒,不管是在代码中设置还是在属性里设置,这一步是实时显示时间的关键,个人建议设置为1秒刷新,到了这一步,基本的功能都完善了,再想想好像也没有了任何遇到的问题。
如果有想自己动手做碰到难题的朋友,欢迎随时交流切磋。
QQ:511582456 请说明是什么原因。
感悟:任何简单的事情看似简单,实则对你来说是很难的,如果你不去尝试动手,也许你永远也不会做。反之,任何难的事情都是由简单的事情积累而成的,所以不积跬步无以至千里。
c#进程、定时器初步学习的更多相关文章
- json2.js的初步学习与了解
json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...
- MySQL 定时器EVENT学习
原文:http://blog.csdn.net/lifuxiangcaohui/article/details/6583535 MySQL 定时器EVENT学习 MySQL从5.1开始支持event功 ...
- 老周的ABP框架系列教程 -》 一、框架理论初步学习
老周的ABP框架系列教程 -- 一.框架理论初步学习 1. ABP框架的来源与作用简介 1.1 简介 1.1.1 ABP框架全称为"ASP.NET Boilerplate ...
- 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助
初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...
- EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库
前提:搭建成功codefirst相关代码,参见EF Codefirst 初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...
- 初步学习python
自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...
- Git的初步学习
前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...
- 语法分析器初步学习——LISP语法分析
语法分析器初步学习——LISP语法分析 本文参考自vczh的<如何手写语法分析器>. LISP的表达式是按照前缀的形式写的,比如(1+2)*(3+4)在LISP中会写成(*(+ 1 2)( ...
- 状态保持以及AJAX的初步学习
嘿嘿,今天学习的有点迷茫哦,主要学习把验证码使用在登录页面时间的一些逻辑,学习这个时间并没有那么的迷惑哦,可是自己写程序时间倒是有点反应迟钝,不过还好总是在最后搞清楚啦,另外就是一步一步的学习是接近项 ...
随机推荐
- python 在ubuntu下安装pycurl
https://www.linuxidc.com/Linux/2016-05/131574.htm
- PCB差分线学习
问:何为差分信号? 答:通俗地说,就是驱动端发送两个等值.反相的信号,接收端通过比较这两个电压的差值来判断逻辑状态“0”还是“1”. 问:差分线的优势在哪? 答:差分信号和普通的单端信号走线相比,最明 ...
- 下载Spring4.3.18.RELEASE的官方文档
wget -p --page-requisites --convert-links -P /root/spring https://docs.spring.io/spring/docs/4.3.18. ...
- JQuery模拟常见的拖拽验证
css部分 <style> #drag{ position: relative; background-color: #e8e8e8; width: 300px; height: 34px ...
- SpringCloud 在Feign上使用Hystrix(断路由)
SpringCloud 在Feign上使用Hystrix(断路由) 第一步:由于Feign的起步依赖中已经引入了Hystrix的依赖,所以只需要开启Hystrix的功能,在properties文件中 ...
- 五、JAVA反射、线程
第五节:Java反射.线程 线程 1.进程:进程是程序的基本执行实体,进程是线程的容器. 线程:被称为轻量进程,是程序执行流的最小单元.线程是进程中的一个实 ...
- weex 学习: 添加图标(使用阿里吧吧-icon)
添加图标(使用阿里吧吧-icon) <text slot="left" class="header-left"></text> i ...
- OpenCV常用头文件介绍
转载:https://www.cnblogs.com/wangguchao/p/7244483.html 1.OpenCV包含的模块 cv – 核心函数库 cvaux – 辅助函数库 cxcore – ...
- 搭积木(java)-蓝桥杯
搭积木小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9.搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小.最后搭成4层的金字塔形,必须用完所有的积木.下 ...
- su;su -;sudo;sudo -i;sudo su;sudo su - 之间的区别
今天我们来聊聊su;su -;sudo;sudo -i;sudo su;sudo su -他们之间的区别. su :su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就 ...