通过手机远程关机
来源:互联网 发布:java和c语言的区别 编辑:程序博客网 时间:2024/04/26 14:49
通过手机进行远程关机
主要流程
1.申请一个博客园账号,找到“我的博客园”页面,拷贝url
2.手机发送“随笔” 内容是“关机”
3.程序每隔五分钟检测一下url上有没有当前的关机命令
4.执行关机命令
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.IO;using System.IO.Compression;using System.Text.RegularExpressions;using System.Diagnostics;namespace 自动关机{ class Program { static void Main(string[] args) { //命令格式 “关机” int wait = 1000* 60 * 5; //五分钟执行一次 string url = "http://www.cnblogs.com/mengxingxinqing/";//配置自己的博客园地址 string regx = @"关机"; string timereg = @"\d{4}-\d{2}-\d{2} \d{2}:\d{2}"; while (true) { Regex r = new Regex(regx); string html = getPageInfo(url); //Console.Write(html); MatchCollection mc; mc = r.Matches(html); if (mc.Count > 0) { string tmp = mc[0].Value; tmp = html.Substring(mc[0].Index, 100); tmp = tmp.Replace(" ", " "); Regex tr = new Regex(timereg); MatchCollection tmc; tmc = tr.Matches(tmp); tmp = tmc[0].Value; string datestr = tmp + ":00"; DateTime dt = Convert.ToDateTime(datestr); DateTime now = DateTime.Now; if (abs(DateDiff("tms", now, dt)) < 2*wait) { //Console.Write("shutdown"); Cmd("shutdown -s"); } } System.Threading.Thread.Sleep(wait); } } /// <summary> /// 请求Url并获取返回值 /// </summary> /// <param name="strUrl">Url地址</param> /// <returns></returns> public static string getPageInfo(string strUrl) { WebClient wc = new WebClient(); // 创建WebClient实例提供向URI 标识的资源发送数据和从URI 标识的资源接收数据 wc.Credentials = CredentialCache.DefaultCredentials; // 获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 ///方法一: Encoding enc = Encoding.GetEncoding("utf-8"); // 如果是乱码就改成 utf-8 / GB2312 Byte[] pageData = wc.DownloadData(strUrl); // 从资源下载数据并返回字节数组。 string shtml = enc.GetString(pageData); return shtml; } /// <summary> /// 返回两个日期之间的时间间隔(y:年份间隔、M:月份间隔、【d:天数间隔、h:小时间隔、m:分钟间隔、s:秒钟间隔、ms:微秒间隔,中括号内前加t,表示总数,如td,总天数】) /// </summary> /// <param name="Interval">间隔标志</param> /// <param name="Date1">开始日期</param> /// <param name="Date2">结束日期</param> /// <returns>返回间隔标志指定的时间间隔</returns> public static double DateDiff(string Interval, System.DateTime? Date1, System.DateTime? Date2) { double dblYearLen = 365;//年的长度,365天 double dblMonthLen = (365 / 12);//每个月平均的天数 System.TimeSpan objT; DateTime d1 = new DateTime(); DateTime d2 = new DateTime(); if (Date1 == null) return 0; if (Date2 == null) return 0; d1 = (DateTime)Date1; d2 = (DateTime)Date2; objT = d2.Subtract(d1); switch (Interval) { case "y"://返回日期的年份间隔 return (double)System.Convert.ToInt32(objT.Days / dblYearLen); case "M"://返回日期的月份间隔 return (double)System.Convert.ToInt32(objT.Days / dblMonthLen); case "d"://返回日期的天数间隔 objT = Convert.ToDateTime(d2.ToShortDateString()).Subtract(Convert.ToDateTime(d1.ToShortDateString())); return (double)objT.Days; case "h"://返回日期的小时间隔 return (double)objT.Hours; case "m"://返回日期的分钟间隔 return (double)objT.Minutes; case "s"://返回日期的秒钟间隔 return (double)objT.Seconds; case "ms"://返回时间的微秒间隔 return (double)objT.Milliseconds; case "td"://总天 return objT.TotalDays; case "th"://总小时数 return objT.TotalHours; case "tm"://总分钟 return objT.TotalMinutes; case "ts"://总秒 return objT.TotalSeconds; case "tms"://总毫秒 return objT.TotalMilliseconds; default: break; } return 0; } /// <summary> /// 执行命令行 /// </summary> /// <param name="cmd"></param> /// <returns></returns> public static string Cmd(string command) { string output = ""; //输出字符串 if (command != null && !command.Equals("")) { Process process = new Process();//创建进程对象 ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "cmd.exe";//设定需要执行的命令 startInfo.Arguments = "/C " + command;//“/C”表示执行完命令后马上退出 startInfo.UseShellExecute = false;//不使用系统外壳程序启动 startInfo.RedirectStandardInput = false;//不重定向输入 startInfo.RedirectStandardOutput = true; //重定向输出 startInfo.CreateNoWindow = true;//不创建窗口 process.StartInfo = startInfo; try { if (process.Start())//开始进程 { process.WaitForExit();//这里无限等待进程结束 output = process.StandardOutput.ReadToEnd();//读取进程的输出 } } catch { } finally { if (process != null) process.Close(); } } return output; } public static double abs(double d) { return d > 0 ? d : -d; } }}
在vs中编译后,生成可执行文件,将可执行文件创建一个快捷方式,将快捷方式放到C:\Documents and Settings\Administrator\「开始」菜单\程序\启动 中便可以开机自启动了
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 通过手机远程关机
- 通过手机远程关机
- 通过手机远程关机
- 通过手机来实现远程关机的思想
- 通过手机来实现远程关机的思想
- 手机远程关机
- 通过shutdown命令实现网络远程关机
- 远程关机
- QQ远程控制 {通过改变QQ状态实现关机}
- 如何通过定位找回掉了关机的iPhone5S手机
- windows xp 远程关机
- 自动关机 或者 远程关机
- 自动关机 或者 远程关机
- .net 远程关机代码
- c# 实现远程关机
- 远程登陆和远程关机
- C#远程关机代码
- 远程关机命令
- 电驴提示“该内容尚未提供权利证明,无法提供下载”之解决办法详解
- 数据包上传到shopex商城后图片显示有问题的解决方法
- C语言 打印*号金字塔~~~
- 关于iOS App的切图 .
- dom4j解析xml字符串实例
- 通过手机远程关机
- POJ 3177 Redundant Paths + POJ 3352 Road Construction
- B. Before an Exam
- onbeforeunload与a标签在IE中的冲突bug
- Android 通讯录分组导航和挤压动画
- 音频编码汇总
- VS2010 MFC工程中 错误提示: IntelliSense: 无法打开源文件 "defines.h"
- 浅谈new和delete
- 关于操作符“>>”和“<<”的重载