怎么让别人远程控制我的电脑 如何用Delphi6实现对计算机的远程控制
如何用Delphi6实现对计算机的远程控制
WinSock是一组API 用于在网络上传输数据和交换信息 虽然现在有很多工具如FTP程序可以在网络上传输数据和文件 但是通过WinSock编程有更大的灵活性 它不需要关心网络连接的细节 然而用WinSock编程却很复杂 但是在Delphi中我们并不需要直接与WinSock的API打交道 因为TClientSocket元件和TServerSocket元件(Internet页)封装了WinSock的大部分API 使得对WinSock的访问大大简化 下面这个远程控制的例子就很清楚地说明了这个问题 它可以发送一个消息给对方 并能够使对方的电脑关闭 重新启动或重新登录
一 实现原理 实行远程控制 实际上就是一个服务器程序(以下简称被控程序)和一个客户程序(以下简称主控程序) 被控方即为服务器程序 它监听客户的请求 并作出处理 主控方即为客户程序 它连接上服务器后 发出自己的请求 服务器便根据自已的请求进行不同的响应
二 编写主控程序 新建一个项目Client dpr 并把一个TClientSocket元件放到Form上 它的属性设置如下 Port设为 (端口号可任意设置 只要求双方统一) 其它属性按默认值 在窗体上添加两个TEdit Edit 用来输入发送的字符 Edit 用来输入IP地址 添加两个TButton Button 点击后用来连接被控机 Button 点击后用来发送字符 然后声明一个私有变量ConnectFlag 表示双方是否连接好 privateConnectFlag:Boolean;
ClientSocket 的OnConnect事件代码如下
procedure TForm ClientSocket Connect(Sender: TObject;Socket: TCustomWinSocket);begin ConnectFlag:=True; //表示连接成功end;
ClientSocket 的OnError事件代码如下
procedure TForm ClientSocket Error(Sender: TObject;Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;var ErrorCode: Integer);beginApplication MessageBox(PChar( 不能连接到IP地址: + Edit Text+ +# + 可能是监听程序没有运行或网络故障! ) 连接错误 MB_OK+MB_ICONSTOP);ErrorCode := ; end;
Button 的OnClick事件代码如下
procedure TForm Button Click(Sender: TObject);beginwith ClientSocket do beginif Active then beginActive := False;//在连接之前首先关闭ConnectFlag:=False; //置连接标志为假end;if Length(Edit Text) > then beginHost := Edit Text; //指定IP地址或主机名Active := True; end; end;end;
Button 的OnClick事件代码如下
procedure TForm Button Click(Sender: TObject);beginif ConnectFlag thenClientSocket Socket SendText(Edit Text)//如果连接成功则发送字符串elseApplication MessageBox(PChar( 没有连接到地址 : + Edit Text+ +# + 检查IP地址是否存在或是否已经连接! ) 提示信息 MB_OK+MB_ICONSTOP);end;
三 编写被控程序 新建一个项目Server dpr 并把一个TServerSocket元件放到Form上
它的属性设置如下 Active设为True Port设为 其它属性按默认值
ServerSocket 的OnClientRead事件代码如下
procedure TForm ServerSocket ClientRead(Sender: TObject;Socket: TCustomWinSocket);varStr:PChar;Code V:Integer;beginStr:=PChar(Socket ReceiveText); //接收字符串Val(Str V Code); //处理接收的字符串 首先转换字符串为整数 if Code< > then Application MessageBox(Str 提示信息 MB_OK+MB_ICONINFORMATION) //如果转换后的数据不是一个整型数就通过消息框来显示字符串elseif (V= )or(V= )or(V= ) then ExitWindowsEx(V ) //调用Windows的API函数(V= 表示重新登录 V= 表示关机 V= 表示重启动)elseApplication MessageBox(Str 提示信息 MB_OK+MB_ICONINFORMATION); //转换后数据不为 时在消息框内显示字符串end;
修改项目文件 不让窗口显示并且防止它运行两次 修改begin和end之间的代码如下

beginApplication Initialize;if FindWindow( TForm Form )= then begin //当没有找到Form 时执行下面代码Application ShowMainForm:=False; //不显示主窗口Application CreateForm(TForm Form );Application Run;end;end
四 注意事项 网络要装配正确并安装TCP/IP协议 且要正常运行
首先要运行被控程序
必须知道对方的IP地址或主机名
lishixinzhi/Article/program/Delphi/201311/25083