用手机控制你的电脑






3.55/5 (55投票s)
在宇宙中的任何地方,都能用手机关闭您的PC,成本更低。
引言
这次做一些不同的事情,但与手机相关。有时我会想:“我能用我的手机控制我的PC吗?” 经过几天的思考,我发现我能做到。这是一个用手机控制PC的简单示例。
我梦想着能够从宇宙的任何地方,用我的手机以更低的成本控制我的PC,例如关机、发送邮件、发送文件、启动或停止服务等。最终我用简单的逻辑实现了它。
背后的逻辑
我有一个手机,可以向我的邮箱发送短信。我的手机服务提供商允许我通过短信服务发送邮件。我将向我的邮箱发送一条消息,例如“SHUTDOWN”(关机的命令)。假设我的系统已开机并打开了Outlook 2000(我没有尝试过其他版本)。我将Outlook设置为每60秒检查一次我的邮箱。
我用VB写了一个监听器应用程序。该应用程序将在我的系统上运行。此监听器将检查我的收件箱是否收到新邮件。如果收到新邮件,它将打开邮件并检查消息是否来自我的手机。如果消息来自我的手机,它将读取我发送的命令。如果命令是“SHUTDOWN”,它将向操作系统触发关机事件,操作系统将关闭PC。
使用代码
我使用Outlook作为我的邮件客户端。创建一个Outlook应用程序对象。从中获取我的收件箱的命名空间。之后,检查每一封未读邮件是否来自我的手机。如果是,则解析消息并将其发送到API函数。
这是解析邮件的代码
Private Function ParseMail() As String
….
….
'Lets iterate through an each mail
For Each oMails In oNpc.GetDefaultFolder(olFolderInbox).Items
If oMails.UnRead Then
sParam = ""
'Change the Subject comparition string
'based on your service provider message
If UCase(oMails.Subject) = UCase(Trim(txtSubject.Text)) Then
sCommand = Mid(oMails.Body, 1, InStr(1, oMails.Body, Chr(13)) - 1)
If InStr(1, sCommand, "~") <> 0 Then
ParseMail =
Mid(sCommand, 1, InStr(1, sCommand,
"~") - 1)
sParam =
Mid(sCommand, InStr(1, sCommand,
"~") + 1) Else
ParseMail =
sCommand End If
oMails.UnRead = False End If ' If
Send Unread mail Header is checked then
send
info to
mobile If
chkUnReadMail.Value =
1 Then If
UCase(oMails.Subject) <> UCase(Trim(txtSubject.Text)) Then
If InStr(1, sAlertedMails, Trim(oMails.EntryID)) = 0 Then
sAlertedMails = sAlertedMails & Trim(oMails.EntryID) & ","
sMsgHead = "From: " & oMails.SenderName & vbCrLf
sMsgHead = sMsgHead & "Sub: " & oMails.Subject & vbCrLf
sMsgHead = sMsgHead & "DT: " & oMails.SentOn & vbCrLf
sMsgHead = sMsgHead & "MSGID: " & oMails.EntryID & "~"
SendSMS sMsgHead
End If
End If
End If
End If
Next oMails
….
….
End Function
我使用了更多的API函数,您可以在www.allapi.net上找到它们。
使用此应用程序,我们可以向系统发送命令,系统也可以报告状态。
例如,我想知道我的收件箱里是否有新邮件,我会发送“CHECKMAIL”这样的命令。当监听器收到此信息时,它将检查未读邮件的数量,并通过短信发送到我的手机。这是解析邮件的代码
我感谢 http://www.spicesms.com 团队为完成此应用程序提供的特殊短信服务。我使用XMLHTTP通过短信将信息传递给我的手机。
Private Sub SendSMS(sMessage As String,
Optional sFrom As String = "rasheedsys")
…
…
Dim oXml As New MSXML2.XMLHTTP
Call oXml.Open("POST", "http://www.spicesms.com/abc.asp?from="
& sFrom & "&msg=" & sMessage & "~")
'Cange your vendor URL appropriately
Call oXml.setRequestHeader("Content-Type", "text/xml")
Call oXml.Send
txtLog = txtLog & "Status of: " & "http://www.spicesms.com/abc.asp?from="
& sFrom & "&msg=" & sMessage & "~" & vbCrLf
txtLog = txtLog & oXml.responseText & vbCrLf
…
…
End Sub
这是命令列表及其功能
SHUTDOWN
如果我们发送“SHUTDOWN”短信,机器将被关机
FILELIST~文件夹路径~电子邮件地址
此命令接收两个参数,文件夹路径和要发送文件列表的电子邮件地址。
如果我们知道文件名和文件路径,我们可以使用SENDFILE命令将文件从机器发送到任何电子邮件地址。如果我们不知道文件名和路径,我们可以使用FILELIST命令。此命令将获取特定文件夹或驱动器中的文件列表。
示例
FILELIST~C:\temp~rasheed1979@hotmail.com
当此消息到达我的收件箱时,它会搜索C盘中的Temp文件夹并生成文件列表。相同的消息将发送到指定的电子邮件地址。在我们的例子中,此文件将发送到rasheed1979@hotmail.com
SENDFILE~带路径的文件名~电子邮件地址
此命令用于将我的系统中的特定文件发送到特定的电子邮件地址。
示例
SENDFILE~C:\myfile.txt~rasheed1979@hotmail.com
文件myfile.txt将发送到电子邮件地址rasheed1979@hotmail.com
WHO
此命令用于查找当前登录到机器的用户
NETSEND~系统名称~要发送的消息
使用此命令,我们可以在没有物理存在的情况下,从一台机器向另一台机器发送消息。
示例
NETSEND~SYS1~你好
消息“你好”将发送到名为SYS1的机器
CHECKMAIL
此命令用于检查收件箱中未读邮件的数量。此命令计算收件箱中未读邮件的数量,并将短信发送到您的移动设备(我使用了www.spicesms.com服务)。
READMAILHEADER
此命令用于检查有关邮件的重要信息,例如消息来自谁、主题、日期时间以及消息ID(用于读取邮件)。读取邮件标题信息,如发件人、主题和消息ID。
READMSG~msgid
我们可以使用READMAILHEADER函数获取邮件的重要详细信息。此函数将返回消息ID。如果我们传递该消息ID,例如READMSG~adwerv354yjgh5fgrweg,则邮件的内容将发送到您的手机。
使用应用程序
您的机器需要VB运行时。此应用程序中没有使用任何其他组件。您的机器需要MSXML 3.0解析器。您可以在www.microsot.com下载区找到它。
编译并运行此应用程序时,将在系统托盘中显示一个图标。
右键单击它以获取设置屏幕。
单击“设置”菜单可查看监听器配置屏幕。单击“退出”可关闭监听器。
结论
我们都知道可以从一台PC控制另一台PC。这是使用手机控制PC的初步方法。不仅可以控制PC,还可以从PC获取报告、文件列表、PC状态、PC中存储的任何其他信息等等。这是一个开始……
历史
- 初始版本 0.1.0
- 版本 0.1.1
FILELIST
SENDFILE
WHO
NETSEND
CHECKMAIL
READMAILHEADER
READMSG
已添加命令