4.2.3 系统控制功能的实现 内容来自www.paper51.com 本系统在此模块中设计为当主控端把控制指令(关机、重起、注销)数据发送给被控端后,被控端接收到这些指令,则进行相应的操作。一般说来如果被控端收到这些指令则调用相应的API函数。在使用界面上运用了选项按钮控件OPTIONBUTTON,在主控端程序中使用了程序控制结构语句If…Then…Else,应用程序中可以经过条件表达式的测试,并根据测试结果为TRUE和FALSE来决定程序运行的方向,只有当满足TURE条件时才会进行下个程序流程,否则执行另一个程序流程。例如当主控端测试结果为REBOOT时,主控端向被控端发送参数"REBOOT",被控端根据参数调用函数Call shell并触发事件过程重起被控端计算机。 http://www.paper51.com 这里调用的Shell函数是VB中的内部函数,它负责执行一个可执行文件,返回一个Variant(Double),如果成功的话,代表这个程序的进程ID,若不成功,则会返回0。 paper51.com Shell的语法:Shell(PathName[,WindowStyle])。 paper51.com 主要代码如下: http://www.paper51.com Private Sub Command1_Click() copyright paper51.com If Option1(0).Value = True Then 内容来自论文无忧网 www.paper51.com mainform.scksever.SendData"CLOSECU" 内容来自www.paper51.com ElseIf Option1(1).Value = True Then paper51.com mainform.scksever.SendData "REBOOT" paper51.com Else http://www.paper51.com
mainform.scksever.SendData "LogOff" http://www.paper51.com End If copyright paper51.com End Sub copyright paper51.com
在被控端的声明sckclient_DataArrival()函数部分写入如下代码: http://www.paper51.com Case "CLOSECU" '关机 内容来自论文无忧网 www.paper51.com Call Shell("shutdown -s -f") http://www.paper51.com Case "REBOOT" '重起 http://www.paper51.com Call Shell("shutdown -r -f") http://www.paper51.com
Case "LogOff" '注销 内容来自论文无忧网 www.paper51.com Call Shell("shutdown -l -f") 内容来自www.paper51.com End copyright paper51.com End Select 内容来自论文无忧网 www.paper51.com End Sub paper51.com 实现系统控制如图5所示: copyright paper51.com
http://www.paper51.com 图 5 系统控制界面 paper51.com
与“系统控制”相同,主控端在单击别的操作按钮时也执行相应的函数,发送相应的命令,被控端收到数据后,首先解包获取命令代码,再根据命令调 http://www.paper51.com 图6 功能执行流程图 copyright paper51.com
用对应的操作函数,执行相关语句产生相应效果。大致过程如图6所示。 paper51.com 4.2.4 发送消息功能的实现 http://www.paper51.com 本系统在发送消息模块中使用MSGBOX控件,调用SendMessage函数来实现文字聊天功能。当主控端在发送信息窗体中输入信息,点击Command1控件按钮时,触发Command1_Click()事件过程,发送参数SENDIF给被控端,当被控端收到参数后触发被控端的Command1_Click()事件并弹出消息文本对话框显示由主控端发送过来的信息Text1.Text。其主要代码如下: 内容来自论文无忧网 www.paper51.com
Private Sub Command1_Click()’主控端 http://www.paper51.com mainform.scksever.SendData"SENDINF" & sendtxt.Text 内容来自www.paper51.com
End Sub 内容来自论文无忧网 www.paper51.com Private SubCommand1_Click()’被控端 http://www.paper51.com connectform.sckclient.SendData"SENDINF" & Text1.Text 内容来自论文无忧网 www.paper51.com End Sub http://www.paper51.com 实现效果图如7所示 http://www.paper51.com paper51.com 图7主控端向被控端发送消息的效果图 http://www.paper51.com
4.2.5 界面控制功能的实现 内容来自论文无忧网 www.paper51.com
本系统在此模块中调用Findwindow 和Showwindow等函数,实现对被控 内容来自www.paper51.com
图8 界面控制窗体 内容来自www.paper51.com 端的桌面图标、开始按钮、任务栏的隐藏和显示的功能。在主控端屏幕控制功能窗体中添加七个Command按钮,分别是隐藏开始按钮、显示开始按钮、隐藏任务栏、显示任务栏、隐藏桌面、显示桌面和退出(图8)。用户点击各个功能按钮时发送命令函数给被控端,实现屏幕控制功能。命令代码如表3。 paper51.com 表3功能按钮与命令 http://www.paper51.com 按钮名称 http://www.paper51.com 命令函数 copyright paper51.com
隐藏开始按钮 内容来自www.paper51.com mainform.scksever.SendData "HIDSTAR" paper51.com 显示开始按钮 copyright paper51.com mainform.scksever.SendData "APPSTAR" http://www.paper51.com 隐藏任务栏 copyright paper51.com
mainform.scksever.SendData "HIDTASK" 内容来自论文无忧网 www.paper51.com 显示任务栏 copyright paper51.com mainform.scksever.SendData "NOTHIDT" copyright paper51.com 隐藏桌面 内容来自www.paper51.com
mainform.scksever.SendData "HIDDISK" http://www.paper51.com 显示桌面 内容来自论文无忧网 www.paper51.com mainform.scksever.SendData "NOHIDDI" copyright paper51.com 退出 paper51.com
Unload Me 内容来自www.paper51.com 在被控端connectform窗体中添加函数代码,利用选择函数激发事件,当被控端收到主控端命令后,便产生相应的效果。表4中是被控端命令代码和相应的操作函数。 copyright paper51.com 表4 命令代码与函数 http://www.paper51.com 命令代码 http://www.paper51.com 操作函数 http://www.paper51.com HIDSTAR copyright paper51.com ShowWindow wnd, SW_HIDE http://www.paper51.com APPSTAR paper51.com ShowWindow wnd, SW_SHOW copyright paper51.com
HIDTASK paper51.com
ShowWindow wnd, SW_HIDE copyright paper51.com NOTHIDT copyright paper51.com ShowWindow wnd, SW_SHOW copyright paper51.com HIDDISK copyright paper51.com ShowWindow wnd, SW_HIDE paper51.com
NOHIDDI http://www.paper51.com ShowWindow wnd, SW_SHOW 内容来自论文无忧网 www.paper51.com 被控端与主控端建立连接后,主控端用户鼠标单击“界面控制”按钮,系统弹出界面控制窗体(图8)。当用户点击隐藏开始按钮时,被控端即发送命令"HIDSTAR"给被控端。被控端接收到命令后,执行命令隐藏开始按钮。 http://www.paper51.com
内容来自论文无忧网 www.paper51.com 图9 showwindow函数主要参数 http://www.paper51.com 在这里主要调用了API中的ShowWindow函数来实现被控端界面的隐藏和显示功能。 主要参数如图9所示。 内容来自论文无忧网 www.paper51.com 因为命令代码的格式基本相同下面进行以“隐藏开始按钮”为例说明,具体命令如表3与表4所示。“/”后为代码的注释。 http://www.paper51.com 写入被控端的代码如下: copyright paper51.com Private Sub Command1_Click() paper51.com mainform.scksever.SendData"HIDSTAR" 内容来自www.paper51.com End Sub 内容来自论文无忧网 www.paper51.com
/定义Command1按钮,当用户点击按钮时发送隐藏开始命令"HIDSTAR"给被控端。 http://www.paper51.com 写入被控端的代码如下: paper51.com Case "HIDSTAR" /接收HIDSTAR命令后,激发隐藏开始按钮事件 paper51.com wnd = FindWindowEx(wnd, 0, sStartButton,vbNullString) paper51.com /利用FindWindow函数获得窗口句柄 copyright paper51.com ShowWindow wnd, SW_HIDE paper51.com /利用ShowWindow函数实现隐藏开始按钮功能 内容来自论文无忧网 www.paper51.com 点击不同的按钮系统会发送相应的命令函数,显示功能是相对于隐藏功能而言的,只有使用了隐藏功能后才可以使用显示功能将画面显示出来。单方面的点击显示功能,被控端窗口显示毫无变化。 copyright paper51.com
|