其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

如何用Delphi6实现对计算机的远程控制


发布日期:2021年07月22日
 
如何用Delphi6实现对计算机的远程控制

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

实现原理

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

编写主控程序

新建一个项目Clientdpr并把一个TClientSocket元件放到Form上它的属性设置如下Port设为(端口号可任意设置只要求双方统一)其它属性按默认值在窗体上添加两个TEditEdit用来输入发送的字符Edit用来输入IP地址添加两个TButtonButton点击后用来连接被控机Button点击后用来发送字符然后声明一个私有变量ConnectFlag表示双方是否连接好

private

ConnectFlag:Boolean;

ClientSocket的OnConnect事件代码如下

procedure TFormClientSocketConnect

(Sender: TObject;Socket: TCustomWinSocket);

begin

ConnectFlag:=True; //表示连接成功

end;

ClientSocket的OnError事件代码如下

procedure TFormClientSocketError(Sender: TObject;

Socket: TCustomWinSocket; ErrorEvent:

TErrorEvent;var ErrorCode: Integer);

begin

ApplicationMessageBox(PChar( 不能连接到IP地址

: + EditText++

#+可能是监听程序没有运行或网络故障!)

连接错误MB_OK+MB_ICONSTOP);

ErrorCode := ;

end;

Button的OnClick事件代码如下

procedure TFormButtonClick(Sender: TObject);

begin

with ClientSocket do begin

if Active then begin

Active := False;//在连接之前首先关闭

ConnectFlag:=False; //置连接标志为假

end;

if Length(EditText) > then begin

Host := EditText; //指定IP地址或主机名

Active := True;

end;

end;

end;

Button的OnClick事件代码如下

procedure TFormButtonClick(Sender: TObject);

begin

if ConnectFlag then

ClientSocketSocketSendText(EditText)

//如果连接成功则发送字符串

else

ApplicationMessageBox(PChar( 没有连接到地址 :

+ EditText++

#+检查IP地址是否存在或是否已经连接!)

提示信息MB_OK+MB_ICONSTOP);

end;

编写被控程序

新建一个项目Serverdpr并把一个TServerSocket元件放到Form上

它的属性设置如下Active设为TruePort设为其它属性按默认值

ServerSocket的OnClientRead事件代码如下

procedure TFormServerSocketClientRead

(Sender: TObject;Socket: TCustomWinSocket);

var

Str:PChar;

CodeV:Integer;

begin

Str:=PChar(SocketReceiveText); //接收字符串

Val(StrVCode); //处理接收的字符串首先转换字符串为整数

if Code< > then

ApplicationMessageBox(Str提示信息

MB_OK+MB_ICONINFORMATION)

//如果转换后的数据不是一个整型数就通过消息框来显示字符串

else

if (V=)or(V=)or(V=) then

ExitWindowsEx(V)

//调用Windows的API函数(V=表示重新登录

V=表示关机V=表示重启动)

else

ApplicationMessageBox(Str提示信息

MB_OK+MB_ICONINFORMATION);

//转换后数据不为时在消息框内显示字符串

end;

修改项目文件不让窗口显示并且防止它运行两次修改begin和end之间的代码如下

begin

ApplicationInitialize;

if FindWindow(TFormForm)= then begin

//当没有找到Form时执行下面代码

ApplicationShowMainForm:=False; //不显示主窗口

ApplicationCreateForm(TForm Form);

ApplicationRun;

end;

end

注意事项

网络要装配正确并安装TCP/IP协议且要正常运行

首先要运行被控程序

必须知道对方的IP地址或主机名

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

上一篇:Delphi程序使用资源的释放

下一篇:Delphi多层应用程序的实现