首先是什么原因让我做这个小项目的呢,是因为在知乎里看到的游侠的文章才尝试着自己做的,文章地址是: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#进程、定时器初步学习的更多相关文章

  1. json2.js的初步学习与了解

    json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...

  2. MySQL 定时器EVENT学习

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/6583535 MySQL 定时器EVENT学习 MySQL从5.1开始支持event功 ...

  3. 老周的ABP框架系列教程 -》 一、框架理论初步学习

    老周的ABP框架系列教程 -- 一.框架理论初步学习   1. ABP框架的来源与作用简介 1.1  简介 1.1.1       ABP框架全称为"ASP.NET Boilerplate ...

  4. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...

  5. EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库

    前提:搭建成功codefirst相关代码,参见EF Codefirst  初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...

  6. 初步学习python

    自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...

  7. Git的初步学习

    前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...

  8. 语法分析器初步学习——LISP语法分析

    语法分析器初步学习——LISP语法分析 本文参考自vczh的<如何手写语法分析器>. LISP的表达式是按照前缀的形式写的,比如(1+2)*(3+4)在LISP中会写成(*(+ 1 2)( ...

  9. 状态保持以及AJAX的初步学习

    嘿嘿,今天学习的有点迷茫哦,主要学习把验证码使用在登录页面时间的一些逻辑,学习这个时间并没有那么的迷惑哦,可是自己写程序时间倒是有点反应迟钝,不过还好总是在最后搞清楚啦,另外就是一步一步的学习是接近项 ...

随机推荐

  1. sql预编译&动态语句静态语句

    https://www.cnblogs.com/micrari/p/7112781.html https://www.cnblogs.com/MarsDing/p/9871703.html https ...

  2. Hibernate: '\xE6\x9D\x8E\xE5\x9B\x9B' for column 'cust_name' at row 1 解决

    新建Hibernate,出现异常 20:11:03,117 WARN SqlExceptionHelper:137 - SQL Error: 1366, SQLState: HY000 20:11:0 ...

  3. 动态规划——Distinct Subsequences

    题目大意:给定字符串S和T,现在从S中任选字符组成T,要求输出方案个数. Example 1:Input: S = "rabbbit", T = "rabbit" ...

  4. python 基础知识整理

    列表推导式 类似 data=[x+1 for x in range(10)]执行结果就是 [1,2,3,4,5,6,7,8,9,10] 还有 even_numbers=[x for x in rang ...

  5. windows下编译Boost

    当前boost最新版本为1.55,下载地址:http://sourceforge.net/projects/boost/files/boost/1.55.0/或者从官网(www.boost.org)下 ...

  6. Js闭包应用场合,为vue的watch加上一个延迟器

    利用vue的watch可以很简单的监听数据变化 而watch来侦听数据继而调用业务逻辑是一种十分常见的模式 最典型的就是自动搜索功能,如下图,这里我们用watch侦听被双向绑定的input值,而后触发 ...

  7. FlowerVisor理解

    Ï来自FlowVisor: A Network Virtualization Layer这篇论文的理解 1. 简介 论文讲述如何虚拟化一个网络,并描述一个特殊的系——FlowVisor 网络虚拟化用来 ...

  8. C++进阶:新人易入的那些坑 --1.常量、常指针和指针常量

    声明:以下内容B站/Youtube学习笔记,https://www.youtube.com/user/BoQianTheProgrammer/ Advanced C++. /* why use con ...

  9. 11、js 数组详细操作方法及解析合集

    js 数组详细操作方法及解析合集 前言 在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总结,很多时候就算用过几次这个api,在开发中也很容易 ...

  10. 【安富莱二代示波器教程】第19章 附件E---参考资料

    第19章      附件E---参考资料 DSP教程 http://forum.armfly.com/forum.php?mod=viewthread&tid=3886 . FreeRTOS教 ...