论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

简单远程控制系统被控端的设计(论文+程序)

5.1 简单远程控制的连接功能实现

本设计的所有功能的实现都是建立在主控端与被控端之间连接的基础上的。主控端与被控端的连接是通过使用WINSOCK控件基于TCP/IP协议进行通信的。 paper51.com

首先,主控端程序必须设置好LocalPort属性,作为监听端口,这个值为一个整数,只要是一个其他TCP/IP应用程序没有使用过的值即可,本设计中主控端使用的是1007。然后使用Listen方法进入监听状态,等待被控端的连接请求。被控端程序发出连接请求,使主控端程序产生ConnectionRequest事件,该时间得到一个参数requestID,主控端程序用Accept方法接受被控端程序的requestID请求。这样,主控端程序就可以用SendData方法发送数据了。Accept方法必须用上一步得到的requestID作为其参数。当主控端程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在该事件中可以使用GetData方法接收数据。如果接受到Close事件,则用Close方法关闭TCP/IP连接。

paper51.com

其次,被控端程序设置Remotehost属性,指定运行主控端程序的主机名,设置RemotePort 属性,指定主控端程序的监听端口,使用Connect方法,向主控端提出连接请求。主控端接受被控端的请求,被控端程序产生Connect事件,就可以用SendData方法发送数据了。当被控端程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。该事件中,可以用GetData方法接收数据,如果接收到Close事件,则用Close方法关闭连接。

http://www.paper51.com

有了这些设置和代码的编写后,主控端程序与被控端程序就能连接了。首先在被控端Click事件过程中写入代码: 内容来自www.paper51.com

Private SubCommand1_Click() paper51.com

If txtip.Text = "" Then

copyright paper51.com

MsgBox "请输入IP,后连接", vbInformation, "提示" copyright paper51.com

Exit Sub

内容来自www.paper51.com

Else

内容来自论文无忧网 www.paper51.com

Command1.Enabled = False

paper51.com

sckclient.RemoteHost = txtip.Text 内容来自论文无忧网 www.paper51.com

sckclient.LocalPort = 1008

内容来自论文无忧网 www.paper51.com

sckclient.RemotePort = 1007

http://www.paper51.com

sckclient.Connect

内容来自www.paper51.com

End If

paper51.com

End Sub

内容来自论文无忧网 www.paper51.com

把主控端与被控端连接所使用的代码写入Connect事件里:

http://www.paper51.com

Private Sub scksever_ConnectionRequest(ByVal requestIDAs Long)

内容来自www.paper51.com

If scksever.State <> 0 Then scksever.Close

paper51.com

scksever.Accept requestID '

paper51.com

End Sub

内容来自论文无忧网 www.paper51.com

这样在主控端与被控端运行并成功建立连接后,用户通过点击主控端界面上的各种按钮就能驱动相应的事件函数,向被控计算机发送命令代码。 内容来自www.paper51.com

运行在主控端计算机上的客户端先创建一个套接字,绑定之后便处于监听状态,等待服务端的连接请求。目标计算机上线后,同样创建套接字,然后向客户端发起连接请求,两端建立好连接后,客户端便可以向服务端发送请求数据,即命令,服务端收到命令后将执行相应的操作并向客户端发送相应的回应信息。这样客户端就达到控制目标计算机的目的了。 http://www.paper51.com

5.2 简单远程控制的被控端系统控制的实现 内容来自论文无忧网 www.paper51.com

本系统在此模块中设计为当主控端把控制指令(关机、重起、注销)数据发送给被控端后,被控端接收到这些指令,则进行相应的操作。一般说来如果被控端收到这些指令则调用相应的API函数。在使用界面上运用了选项按钮控件OPTIONBUTTON,在主控端程序中使用了程序控制结构语句If…Then…Else,应用程序中可以经过条件表达式的测试,并根据测试结果为TRUE和FALSE来决定程序运行的方向,只有当满足TURE条件时才会进行下个程序流程,否则执行另一个程序流程。例如当主控端测试结果为REBOOT时,主控端向被控端发送参数EWX_REBOOT,被控端根据参数调用CALLSHELL()函数并触发事件过程重起被控端计算机。

内容来自www.paper51.com

Shell函数是VB中的内部函数,它负责执行一个可执行文件,返回一个Variant(Double),如果成功的话,代表这个程序的进程ID,若不成功,则会返回0。 http://www.paper51.com

Shell的语法:Shell(PathName[,WindowStyle])。 内容来自论文无忧网 www.paper51.com

PathName 为必需参数。类型为String,它指出了要执行的程序名,以及任何需要的参数或命令行变量,也可以包括路径名。 copyright paper51.com

WindowStyle为可选参数。Integer类型,指定在程序运行时窗口的样式。WindowStyle的常量、值的描述如以下这些值: 内容来自www.paper51.com

VbHide 0窗口被隐藏,且焦点会移到隐式窗口。 内容来自www.paper51.com

VbNormalFocus1窗口具有焦点,且会还原到它原来的大小和位置。

内容来自论文无忧网 www.paper51.com

VbMinimizedFocus2 窗口会以一个具有焦点的图标来显示(缺省值)。 paper51.com

VbMaximizedFocus3 窗口是一个具有焦点的最大化窗口。

copyright paper51.com

VbNormalNoFocus4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。 内容来自论文无忧网 www.paper51.com

VbMinimizedNoFocus6 窗口会以一个图标来显示,而当前活动的窗口仍然保持活动

内容来自论文无忧网 www.paper51.com

写入被控端的代码如下: http://www.paper51.com

PrivateSub Command1_Click()

内容来自www.paper51.com

mainform.scksever.SendData"HIDSTAR" http://www.paper51.com

End Sub

内容来自论文无忧网 www.paper51.com

(定义Command1按钮,当用户点击按钮时发送隐藏开始命令"HIDSTAR"给被控端。) 内容来自论文无忧网 www.paper51.com

Case "HIDSTAR" (接收HIDSTAR命令后,激发隐藏开始按钮事件)

内容来自论文无忧网 www.paper51.com

wnd =FindWindowEx(wnd, 0, sStartButton, vbNullString)(利用FindWindow函数获得窗口句柄)

http://www.paper51.com

ShowWindow wnd, SW_HIDE(利用ShowWindow函数实现隐藏开始按钮功能) 内容来自论文无忧网 www.paper51.com

实现控制图如图3所示: paper51.com

http://www.paper51.com

图 3 系统控制界面 内容来自www.paper51.com

5.3 简单远程控制的向被控端发送消息的实现

内容来自www.paper51.com

本系统在发送消息模块中使用MSGBOX控件。当主控端在发送信息窗体中输入信息,点击Command1控件按钮时,触发Command1_Click()事件过程,发送参数SENDIF给被控端,当被控端收到参数后触发被控端的Command1_Click()事件并弹出消息文本对话框显示由主控端发送过来的信息Text1.Text。其主要代码如下:

copyright paper51.com

Private Sub Command1_Click()’主控端 copyright paper51.com

mainform.scksever.SendData "SENDINF" &sendtxt.Text

内容来自www.paper51.com

End Sub 内容来自www.paper51.com

Private Sub Command1_Click()’被控端 内容来自论文无忧网 www.paper51.com

connectform.sckclient.SendData "SENDINF"& Text1.Text

内容来自论文无忧网 www.paper51.com

End Sub paper51.com

在被控端对话框中输入消息后,单击发送后主控端效果图如4所示:

内容来自论文无忧网 www.paper51.com

内容来自www.paper51.com

图4 主控端发送消息效果图 paper51.com

当主控端发送消息后,被控端自动弹出消息对话框如图5所示: http://www.paper51.com

paper51.com

图5 被控端接收到主控端向被控端发送消息的效果图 内容来自论文无忧网 www.paper51.com

5.4 简单远程控制的被控端界面控制的实现 copyright paper51.com

在 VB 编程中有时需要对系统的任务栏的各个部分(如开始菜单按钮、任务栏等等)进行各类操作(如隐藏、显示、有效、无效)等等,这是如何实现的呢,主要就是通过 ShowWindow、EnableWindow 函数来完成的。 copyright paper51.com

在这里主要调用了API中的ShowWindow函数来实现被控端界面的隐藏和显示功能。ShowWindow函数的功能是控制窗体的可见性,当获得窗体句柄后,函数通过SW_HIDE和SW_SHOW来显示或隐藏界面。

copyright paper51.com

本系统在此模块中主要使用到的函数ShowWindow。此函数在VB声明 内容来自www.paper51.com

DeclareFunction Show Window Lib "user32" Alias "ShowWindow" (ByValhwnd As Long, ByVal nCmdShow As Long) As Long paper51.com

并且使用PICTUREBOX等控件,实现对被控端的桌面图标、开始按钮、任务栏的隐藏和显示的功能。当服务器端点击Command控件按钮时,触发Command_Click()事件过程,向被控端程序发送参数HIDSTAR(隐藏开始按钮)、APPSTAR(显示开始按钮)、HIDTASK(隐藏任务栏)、NOTHIDT(隐藏任务栏)、HIDDISK(隐藏桌面图标)、NOHIDDI(显示桌面图标),被控端收到参数后调用 SystemParametersInfo()函数并根据参数触发不同的事件过程。实现其功能的参数如表1所示: http://www.paper51.com

表1 showwindow函数主要参数表 http://www.paper51.com

实现对被控端计算机开始按钮的隐藏和显示效果图如图6所示:

copyright paper51.com

copyright paper51.com

图6开始按钮的显示与隐藏

copyright paper51.com

实现对被控端计算机任务栏的隐藏和显示效果图如图7所示: copyright paper51.com

 

paper51.com

图7 任务栏的显示与隐藏 paper51.com

实现对被控计算机桌面图标的隐藏和显示效果图如图8所示:

http://www.paper51.com

图8 桌面图标的显示与隐藏 paper51.com

------分隔线----------------------------
联系方式