用手机对电脑进行远程关机用手机对电脑进行远程关机
用手机对电脑进行远程关机
第一个问题就是手机和计算机通信问题,这个确实比较棘手。首先计算机在内网,手机的ip也是随机分配,两者要实现无缝对接,必须有一个外网IP的服务器,手机和计算机的客户端都主动登录到这个服务器上,然后才能对接。这个,搭个服务器太麻烦(希望IPV6能赶快普及啊~~)。其实,仔细想想我们可以利用现有的手机和计算机的点对点通信工具,比如飞信,QQ之类的,还有就是使用邮件。
使用邮件的解决方案就是,通过手机给自己发送一封邮件,然后再计算机上跑一个守护进程,定期扫描邮箱,并去读邮件,...
用手机对电脑进行远程关机
用手机对电脑进行远程关机
第一个问题就是手机和计算机通信问题,这个确实比较棘手。首先计算机在内网,手机的ip也是随机分配,两者要实现无缝对接,必须有一个外网IP的服务器,手机和计算机的客户端都主动登录到这个服务器上,然后才能对接。这个,搭个服务器太麻烦(希望IPV6能赶快普及啊~~)。其实,仔细想想我们可以利用现有的手机和计算机的点对点通信工具,比如飞信,QQ之类的,还有就是使用邮件。
使用邮件的解决
就是,通过手机给自己发送一封邮件,然后再计算机上跑一个守护进程,定期扫描邮箱,并去读邮件,根据主题(例如:关机,)再实施关机动作。可以使用Python实现,工作量应该不是很大(MAX:3 hours).这个缺点就是实时性不太好,还是使用现有的即时通信工具实时性好点。
我选择的方案就是使用QQ,你需要注册两个QQ,一个是你的计算机端上运行的QQ,表示为QQC吧。另一个就是你的手机上运行的QQ,表示QQT吧。在QQC上给QQT好友命名,命名尽量复杂点,这样可以避免一些事故,具体原因后面看了就会知道。这里选择命名为“RemotingShutDownWorker”,然后把QQC设置为弹窗模式(就是有一条新的消息后,弹出发送消息者的窗口)。这样QQT向QQC发送一个消息之后就会弹出一个窗体,窗体的标题就是“RemotingShutDownWorker”。
基于这一点,应该首先这样一个程序,它定期扫描当前屏幕最顶层的所有
窗体的标题,如果发现有标题为“RemotingShutDownWorker”时执行关机操作。选择编程语言为C语言,编程环境是VS2010,使用的模板为WIN32 CONSOLE APPLICATION。
另外还需要注意的几个地方就是:
, 程序运行过程中不需要显示窗体
, 程序应该能够开机自启
, 程序应该每间隔一段时间扫描一次,否则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
12.
13. #include
14.
15. #define TITLE_LENGTH 256 16.
17. #define EXIT_SUCCESS 0 18.
19. #pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainC
RTStartup\"")
20.
21. BOOL CALLBACK lpMyEnumFunc(HWND hwnd, LPARAM lParam)
22.
23. {
24.
25. TCHAR szTitle[TITLE_LENGTH]; 26.
27. GetWindowTextW(hwnd,szTitle,TITLE_LENGTH);
28.
29. if( 0==wcscmp(szTitle,TEXT("RemotingShutDownWorker")))
30.
31. {
32.
33. BOOL *pDetected=(BOOL *)lParam;
34.
35. *pDetected=true; 36.
37. return 0;
38.
39. }
40.
41. return 1;
42.
43. }
44.
45. int main()
46.
47. {
48.
49. BOOL bDetected=false;
50.
51. BOOL *pDetected=&bDetected;
52.
53. while(!bDetected)
54.
55. {
56.
57. EnumWindows(lpMyEnumFunc,(LPARAM)pDetected);
58.
59. Sleep(5000);
60.
61. }
62.
//::MessageBoxW(NULL,TEXT("将要关机"),TEXT("远程关机63.
"),MB_OK);
64.
65. system("shutdown -s -t 20");
66.
67. return EXIT_SUCCESS;
68.
69. }
图1是运行效果截图,远程关机测试很顺利。最后一个问题就是怎么通过 程序把显示器关掉,这个貌似必须通过机械开关关掉,虽然远程关机以后,由于屏幕不在收到主机箱发来的信号会自动进入节电模式,电流估计小的和充电器没有工 作情况下差不多,所以应该不会浪费多少瓦特。但是,确实是个应该解决的问题,这个有时间再搞搞~~,先不玩了,赶快赶一个导师布置的并行算法。。。。。。
图1:远程关机效果图
本文档为【用手机对电脑进行远程关机】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。