tag 标签: 自动关机

相关博文
  • 热度 24
    2012-9-18 14:42
    2782 次阅读|
    2 个评论
    被朋友彻底恶作剧了一把……来了个简单的VB设计的小软件,前面就是一些问题加选项没什么……到最后当你点下一步后就弹出个对话框: 我当时丝毫没有怀疑是这个小软件造成的,以为是电脑某处**了!(按自我的常识理解,微软怎么可能允许软件可调用强制关机这种功能!!)到后来才知道……原来是真的…… 吃一堑长一智吧。于是自己就花了点时间研究了下这个“恶作剧软件”,发现它竟然是这么的简单!! 首先,不管别的那些个铺垫功能,这都是用来让你放松警惕的,设计上可以充分发挥大家的想象力~ 我们直接看看强制关机部分的实现,其实在我们C盘里面就有一个强制关机的exe: 所以,只要我们调用这个exe就可以了~ 下面我用VC试了试这样的方法。先建了个对话框的工程,加了个按键“shutdown”,按键单击处理函数如下: void CShutdownDlg::OnClickedButtonShutdown() {  // TODO: 在此添加控件通知处理程序代码  FILE *f;  if(f=fopen("c:\\windows\\system32\\shutdown.exe","r"))   system("c:\\windows\\system32\\shutdown.exe -s -t 30");//30秒以后关机  fclose(f); } shutdown.exe有着很多的参数,比如上面用到了-s和-t,作用就是强制关机和关机时间设定,单位是秒。另外的一些的参数如下: -f:强行关闭应用程序 -m \\计算机名:控制远程计算机 -i:显示图形用户界面,但必须是Shutdown的第一个选项 -l:注销当前用户 -r:关机并重启 -t 时间:设置关机倒计时 -c "消息内容":输入关机对话框中的消息内容(不能超127个字符) 这里还要重点介绍下另一个参数-a——取消关机操作,在调试的时候这个很有用,毕竟总不能我们自己试的时候要频繁关机了~ void CShutdownDlg::OnClickedButtonCancel() {  // TODO: 在此添加控件通知处理程序代码  FILE *f;  if(f=fopen("c:\\windows\\system32\\shutdown.exe","r"))   system("c:\\windows\\system32\\shutdown.exe -a");//取消注销关机  fclose(f); } 通过上面的部分可以看出,其实Windows操作系统里,exe也是一种文件,我们可以通过对文件操作的方式来控制exe的运行,个人的一点感觉就是,好比我们数字电路处理数据时,不管是什么样的数据形式,其实都是一段二进制码流;在操作系统中也是一样的,不管是什么样的格式,其实都是数据文件。 之后,自己又在网上找了找别的“恶作剧软件”发现还真是层出不穷,大家有兴趣也可以找找看。 自己想到一个算是比较有用的“恶作剧”——让鼠标消失不见! 个人想到的有两种实现方法,一是将鼠标功能关闭;二是让鼠标一直停在我们看不到的地方。这里采用第二种方法,这样稍微简单一些。 让鼠标停在我们看不到的地方就得先确定,哪里是我们看不到的地方?自己试试就会发现,在下边界和右边界的时候,我们人眼是看不到的。这样就简单了。代码如下: void CShutdownDlg::OnClickedButtonMouse() {  // TODO: 在此添加控件通知处理程序代码  CPoint mouse_position;  tagMSG msg;  mouse_position.x = 0;  mouse_position.y = 65535;  while (1)  {   ::SetCursorPos(mouse_position.x,mouse_position.y);//设定鼠标所在位置   if(::PeekMessage(msg, m_hWnd, WM_KEYFIRST,WM_KEYLAST, PM_REMOVE))   //获取键盘按下事件响应   {    if(msg.message == WM_KEYDOWN msg.wParam == VK_UP)    //判断是否是“向上”按键按下     break;   }  } } 这里同样是用了一个按钮响应函数来实现。首先, SetCursorPos 这个函数就是用来设定鼠标的位置,我们可以通过试验来看看放在哪个坐标位置时是我们看不见的,对于屏幕来说,左上角的顶点是坐标(0,0),所有坐标都是正数。 如上,凡事都不能做死了,必须留有后路。于是就在死循环里加了一个break的判定,当键盘按下“UP”键的时候,就退出死循环。如果要作为一个“恶作剧”的话,这个键值可以改成别的,这样不容易被人发现,呵呵~