网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
如何用Delphi6实现对计算机的远程控制
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

WinSock是一组API,用于在网络上传输数据和交换信息。虽然现在有很多工具如FTP程序可以在网络上传输数据和文件,但是通过WinSock编程有更大的灵活性,它不需要关心网络连接的细节,然而用WinSock编程却很复杂,但是在Delphi中我们并不需要直接与WinSock的API打交道,因为TClientSocket元件和TServerSocket元件(Internet页)封装了WinSock的大部分API,使得对WinSock的访问大大简化。下面这个远程控制的例子就很清楚地说明了这个问题,它可以发送一个消息给对方,并能够使对方的电脑关闭、重新启动或重新登录。

一、实现原理
  实行远程控制,实际上就是一个服务器程序(以下简称被控程序)和一个客户程序(以下简称主控程序):被控方即为服务器程序,它监听客户的请求,并作出处理;主控方即为客户程序,它连接上服务器后,发出自己的请求,服务器便根据自已的请求进行不同的响应。

二、编写主控程序
  新建一个项目Client.dpr,并把一个TClientSocket元件放到Form上,它的属性设置如下:Port设为100(端口号可任意设置,只要求双方统一),其它属性按默认值。在窗体上添加两个TEdit:Edit1用来输入发送的字符,Edit2用来输入IP地址;添加两个TButton:Button1点击后用来连接被控机,Button2点击后用来发送字符,然后声明一个私有变量ConnectFlag,表示双方是否连接好:


private
ConnectFlag:Boolean;

---- 2、ClientSocket1的OnConnect事件代码如下:


procedure TForm1.ClientSocket1Connect
(Sender: TObject;Socket: TCustomWinSocket);
begin
ConnectFlag:=True; //表示连接成功
end;

---- 3、ClientSocket1的OnError事件代码如下:


procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent:
TErrorEvent;var ErrorCode: Integer);
begin
Application.MessageBox(PChar('' 不能连接到IP地址
: '' + Edit2.Text+''。''+
#13+''可能是监听程序没有运行或网络故障!''),''
连接错误'',MB_OK+MB_ICONSTOP);
ErrorCode := 0;
end;

---- 4、Button1的OnClick事件代码如下:


procedure TForm1.Button1Click(Sender: TObject);
begin
with ClientSocket1 do begin
if Active then begin
Active := False;//在连接之前首先关闭
ConnectFlag:=False; //置连接标志为假
end;
if Length(Edit2.Text) > 0 then begin
Host := Edit2.Text; //指定IP地址或主机名
Active := True;
end;
end;
end;

---- 5、Button2的OnClick事件代码如下:


procedure TForm1.Button2Click(Sender: TObject);
begin
if ConnectFlag then
ClientSocket1.Socket.SendText(Edit1.Text)
//如果连接成功则发送字符串
else
Application.MessageBox(PChar('' 没有连接到地址 :
'' + Edit2.Text+''。''+
#13+''检查IP地址是否存在或是否已经连接!''),''
提示信息'',MB_OK+MB_ICONSTOP);
end;

三、编写被控程序
---- 1、新建一个项目Server.dpr,并把一个TServerSocket元件放到Form上,

它的属性设置如下:Active设为True;Port设为100,其它属性按默认值。

---- 2、ServerSocket1的OnClientRead事件代码如下:


procedure TForm1.ServerSocket1ClientRead
(Sender: TObject;Socket: TCustomWinSocket);
var
Str:PChar;
Code,V:Integer;
begin
Str:=PChar(Socket.ReceiveText); //接收字符串
Val(Str,V,Code); //处理接收的字符串,首先转换字符串为整数
if Code< >0 then
Application.MessageBox(Str,''提示信息'',
MB_OK+MB_ICONINFORMATION)
//如果转换后的数据不是一个整型数就通过消息框来显示字符串
else
if (V=0)or(V=1)or(V=2) then
ExitWindowsEx(V,0)
//调用Windows的API函数(V=0表示重新登录、
V=1表示关机、V=2表示重启动)
else
Application.MessageBox(Str,''提示信息'',
MB_OK+MB_ICONINFORMATION);
//转换后数据不为0、1、2时在消息框内显示字符串
end;

---- 3、修改项目文件,不让窗口显示并且防止它运行两次,修改begin和end之

间的代码如下:


begin
Application.Initialize;
if FindWindow(''TForm1'',''Form1'')=0 then begin
//当没有找到Form1时执行下面代码
Application.ShowMainForm:=False; //不显示主窗口
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.

四、注意事项
---- 1、网络要装配正确并安装TCP/IP协议,且要正常运行。

---- 2、首先要运行被控程序

---- 3、必须知道对方的IP地址或主机名。

不过要注意的是,此程序可以远程控制对方的计算机,请慎用.如果出现问题,笔者概不负责. 

  • 下一篇资讯: 使用stringgrid的例子
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号