用手机对电脑进行远程关机

简介:

PS:本人一月份写的文章,贴在这里。

      昨天真是奔波的一天,中午烤肉逛街下午寿司看电影(陪老婆)。今天中午又是麻辣诱惑。额,不争气的肠胃果然导致我拉肚子了。不过,话说昨天下午在石景山万达吃完寿司后,看了《金陵十三钗》倒是颇有感触,这部电影(又名《处女保卫战》)旗帜鲜明的打出了这样口号:让处女先走。老谋子的电影越来越不行了,首先是不知道这部电影的主题是什么?然后是不知道这部电影的主角是什么?最后但也是最重要的一点就是不知道这部电影到底是哪个国家拍的?片头不少人名后面都缀着不同的国家,如日本,美国,中国等等,一片混乱。看点就是开头不多的战争场面,枪声炮声做的很逼真了,完全超越了以前战争场面的那种稚气,还有就是石景山万达国际影城的音响效果确实不错,好几次枪声都nearly shock the shit out of me(哈哈,开个低俗的玩笑)。影片中佟大为的华丽的怎么看都像是根据《这个杀手不太冷》这部电影结尾时杀手阵亡的剧情模仿的以衬托个人主义重复滴斑驳了日本人死亡人数:中国人死亡人数1:10的不争气历史事实啊。恩,电影不错,让我有收获~

         晚上回来的时候,没赶上最后一班地铁,导致我和老婆租个黑的回来,被狠狠的blackmail了几刀,哎,伤不起。回来的时候,直接回的大运村,实验室都没来得及回去,所以电脑也没关。想起导师平时让我们注意关机,颇感愧疚,昨晚回去后想了会,决定实现用手机远程关掉电脑的一个程序(总算扯到主题了~~)。

     第一个问题就是手机和计算机通信问题,这个确实比较棘手。首先计算机在内网,手机的ip也是随机分配,两者要实现无缝对接,必须有一个外网IP的服务器,手机和计算机的客户端都主动登录到这个服务器上,然后才能对接。这个,搭个服务器太麻烦(希望IPV6能赶快普及啊~~)。其实,仔细想想我们可以利用现有的手机和计算机的点对点通信工具,比如飞信,QQ之类的,还有就是使用邮件。

     使用邮件的解决方案就是,通过手机给自己发送一封邮件,然后再计算机上跑一个守护进程,定期扫描邮箱,并去读邮件,根据主题(例如:关机?)再实施关机动作。可以使用Python实现,工作量应该不是很大(MAX:3 hours).这个缺点就是实时性不太好,还是使用现有的即时通信工具实时性好点。

     我选择的方案就是使用QQ,你需要注册两个QQ,一个是你的计算机端上运行的QQ,表示为QQC吧。另一个就是你的手机上运行的QQ,表示QQT吧。在QQC上给QQT好友命名,命名尽量复杂点,这样可以避免一些事故,具体原因后面看了就会知道。这里选择命名为“RemotingShutDownWorker”,然后把QQC设置为弹窗模式(就是有一条新的消息后,弹出发送消息者的窗口)。这样QQTQQC发送一个消息之后就会弹出一个窗体,窗体的标题就是“RemotingShutDownWorker”。

     基于这一点,应该首先这样一个程序,它定期扫描当前屏幕最顶层的所有窗体的标题,如果发现有标题为“RemotingShutDownWorker”时执行关机操作。选择编程语言为C语言,编程环境是VS2010,使用的模板为WIN32 CONSOLE APPLICATION

    另外还需要注意的几个地方就是:

l  程序运行过程中不需要显示窗体

l  程序应该能够开机自启

l  程序应该每间隔一段时间扫描一次,否则CPU亚历山大

       第一点,比较容易实现,在程序中添加一句“#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")”就可以了。第二点,自启的话也很简单,把这个可执行程序的快捷方式拷贝到Windows启动文件夹中就哦了。第三点,调用Sleep函数,设置一个间隔时间(例如:5秒?)。

         把代码贴在下面,仅供参考~



 
 
  1. /* 
  2.  
  3. *Author:lichao 
  4.  
  5. *Date:01-14-2012 
  6.  
  7. *Description:Shutdown the computer remotely by mobile phone 
  8.  
  9. */ 
  10.  
  11. #include<windows.h> 
  12.  
  13. #include<stdio.h> 
  14.  
  15. #define TITLE_LENGTH 256 
  16.  
  17. #define EXIT_SUCCESS 0 
  18.  
  19. #pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") 
  20.  
  21. BOOL CALLBACK lpMyEnumFunc(HWND hwnd, LPARAM lParam) 
  22.  
  23.  
  24.     TCHAR szTitle[TITLE_LENGTH]; 
  25.  
  26.     GetWindowTextW(hwnd,szTitle,TITLE_LENGTH); 
  27.  
  28.     if( 0==wcscmp(szTitle,TEXT("RemotingShutDownWorker"))) 
  29.  
  30.     { 
  31.  
  32.         BOOL *pDetected=(BOOL *)lParam; 
  33.  
  34.         *pDetected=true
  35.  
  36.         return 0; 
  37.  
  38.     } 
  39.  
  40.     return 1; 
  41.  
  42.  
  43. int main() 
  44.  
  45.  
  46.     BOOL bDetected=false
  47.  
  48.     BOOL *pDetected=&bDetected; 
  49.  
  50.     while(!bDetected) 
  51.  
  52.     { 
  53.  
  54.         EnumWindows(lpMyEnumFunc,(LPARAM)pDetected); 
  55.  
  56.         Sleep(5000); 
  57.  
  58.     } 
  59.  
  60.     //::MessageBoxW(NULL,TEXT("将要关机"),TEXT("远程关机"),MB_OK); 
  61.  
  62.     system("shutdown -s -t 20"); 
  63.  
  64.     return EXIT_SUCCESS; 
  65.  

     1是运行效果截图,远程关机测试很顺利。最后一个问题就是怎么通过程序把显示器关掉,这个貌似必须通过机械开关关掉,虽然远程关机以后,由于屏幕不在收到主机箱发来的信号会自动进入节电模式,电流估计小的和充电器没有工作情况下差不多,所以应该不会浪费多少瓦特。但是,确实是个应该解决的问题,这个有时间再搞搞~~,先不玩了,赶快赶一个导师布置的并行算法。。。。。。

         

效果图

1:远程关机效果图







本文转自hipercomer 51CTO博客,原文链接:http://blog.51cto.com/hipercomer/789433

相关文章
|
6月前
|
存储 监控 iOS开发
iOS应用崩溃了,如何通过崩溃手机连接电脑查找日志方法
在iOS应用开发过程中,调试日志和奔溃日志是开发者必不可少的工具。当iOS手机崩溃时,我们可以连接电脑并使用Xcode Console等工具来查看日志。然而,这种方式可能不够方便,并且处理奔溃日志也相当繁琐。克魔助手的出现为开发者带来了极大的便利,本文将详细介绍其功能和使用方法。 克魔助手会提供两种日志,一种是实时的,一种的是崩溃的。(由于崩溃日志的环境很麻烦,目前只展示实时日志操作步骤)
|
缓存 网络协议
DNS中电脑网址能打开,用手机浏览器不行,需要解析什么?
DNS中电脑网址能打开,用手机浏览器不行,需要解析什么?
584 1
|
JSON JavaScript 前端开发
超燃,拿来即用!Echarts动态排名柱状图(自适应电脑和手机端)说明文档
超燃,拿来即用!Echarts动态排名柱状图(自适应电脑和手机端)说明文档
337 0
【干货】手机投屏到电脑
【干货】手机投屏到电脑
|
1月前
|
人工智能 自然语言处理 机器人
“今日热点:AI像人类一样使用手机和电脑”,魔搭社区的开源项目已先行一步
今天,Claude发布了Computer Use的新功能,可以让AI像人一样使用电脑!
|
1月前
|
Android开发 Swift iOS开发
python 基于电脑蓝牙连接获取手机的实时数据
python 基于电脑蓝牙连接获取手机的实时数据
60 0
|
2月前
|
自然语言处理 决策智能 Python
同时操控手机和电脑,100项任务,跨系统智能体评测基准有了
【9月更文挑战第9天】近年来,随着人工智能技术的进步,自主智能体的应用日益广泛。为解决现有评测基准的局限性,研究人员推出了CRAB(Cross-environment Agent Benchmark),这是一种支持跨环境任务的新框架,结合了基于图的精细评估方法和高效的任务构建机制。CRAB框架支持多种设备并可轻松扩展至任何具备Python接口的环境。首个跨平台基准CRAB-v0包含100项任务,实验显示GPT-4单智能体在完成率方面表现最佳。CRAB框架为智能体研究提供了新机遇,但也面临计算资源和评估准确性等方面的挑战。
71 9
|
5月前
|
安全
手机kali终端,集成安全集成工具----使用arpspoof工具给电脑断网------断网,网络攻击手段
手机kali终端,集成安全集成工具----使用arpspoof工具给电脑断网------断网,网络攻击手段
|
5月前
|
Web App开发 移动开发 编解码
FFmpeg开发笔记(三十二)利用RTMP协议构建电脑与手机的直播Demo
本文讨论了实时数据传输在互联网中的重要性,如即时通讯和在线直播。一对一通信通常使用WebRTC技术,但一对多直播需要流媒体服务器和特定协议,如RTSP、RTMP、SRT或RIST。RTMP由于其稳定性和早期普及,成为国内直播的主流。文章通过实例演示了如何使用OBS Studio和RTMP Streamer进行RTMP推流,并对比了不同流媒体传输协议的优缺点。推荐了两本关于FFmpeg和Android开发的书籍以供深入学习。
87 0
FFmpeg开发笔记(三十二)利用RTMP协议构建电脑与手机的直播Demo
|
5月前
discuz,如何去掉标题中的Powered by Discuz! 电脑端手机端整合
discuz,如何去掉标题中的Powered by Discuz! 电脑端手机端整合
838 0
下一篇
无影云桌面