有个小程序,请高手帮忙指点下!谢谢(0分)

  • 主题发起人 主题发起人 89705421
  • 开始时间 开始时间
8

89705421

Unregistered / Unconfirmed
GUEST, unregistred user!
一、实现原理 <br>  实行远程控制,实际上就是一个服务器程序(以下简称被控程序)和一个客户程序(以下简称主控程序):被控方即为服务器程序,它监听客户的请求,并作出处理;主控方即为客户程序,它连接上服务器后,发出自己的请求,服务器便根据自已的请求进行不同的响应。<br><br>二、编写主控程序 <br>  新建一个项目Client.dpr,并把一个TClientSocket元件放到Form上,它的属性设置如下:Port设为100(端口号可任意设置,只要求双方统一),其它属性按默认值。在窗体上添加两个TEdit:Edit1用来输入发送的字符,Edit2用来输入IP地址;添加两个TButton:Button1点击后用来连接被控机,Button2点击后用来发送字符,然后声明一个私有变量ConnectFlag,表示双方是否连接好:<br><br><br>private<br>ConnectFlag:Boolean;<br><br>---- 2、ClientSocket1的OnConnect事件代码如下:<br><br><br>procedure TForm1.ClientSocket1Connect<br>(Sender: TObject;Socket: TCustomWinSocket);<br>begin <br>ConnectFlag:=True; //表示连接成功<br>end;<br><br>---- 3、ClientSocket1的OnError事件代码如下:<br><br><br>procedure TForm1.ClientSocket1Error(Sender: TObject;<br>Socket: TCustomWinSocket; ErrorEvent: <br>TErrorEvent;var ErrorCode: Integer);<br>begin<br>Application.MessageBox(PChar(' 不能连接到IP地址<br>: ' + Edit2.Text+'。'+<br>#13+'可能是监听程序没有运行或网络故障!'),'<br>连接错误',MB_OK+MB_ICONSTOP);<br>ErrorCode := 0; <br>end;<br><br>---- 4、Button1的OnClick事件代码如下:<br><br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>with ClientSocket1 do begin<br>if Active then begin<br>Active := False;//在连接之前首先关闭<br>ConnectFlag:=False; //置连接标志为假<br>end;<br>if Length(Edit2.Text) &gt; 0 then begin<br>Host := Edit2.Text; //指定IP地址或主机名<br>Active := True; <br>end; <br>end;<br>end;<br><br>---- 5、Button2的OnClick事件代码如下:<br><br><br>procedure TForm1.Button2Click(Sender: TObject);<br>begin<br>if ConnectFlag then<br>ClientSocket1.Socket.SendText(Edit1.Text)<br>//如果连接成功则发送字符串<br>else<br>Application.MessageBox(PChar(' 没有连接到地址 :<br>' + Edit2.Text+'。'+<br>#13+'检查IP地址是否存在或是否已经连接!'),'<br>提示信息',MB_OK+MB_ICONSTOP);<br>end;<br><br>三、编写被控程序 <br>---- 1、新建一个项目Server.dpr,并把一个TServerSocket元件放到Form上,<br><br>它的属性设置如下:Active设为True;Port设为100,其它属性按默认值。<br><br>---- 2、ServerSocket1的OnClientRead事件代码如下:<br><br><br>procedure TForm1.ServerSocket1ClientRead<br>(Sender: TObject;Socket: TCustomWinSocket);<br>var<br>Str:PChar;<br>Code,V:Integer;<br>begin<br>Str:=PChar(Socket.ReceiveText); //接收字符串<br>Val(Str,V,Code); //处理接收的字符串,首先转换字符串为整数 <br>if Code&lt; &gt;0 then <br>Application.MessageBox(Str,'提示信息',<br>MB_OK+MB_ICONINFORMATION) <br>//如果转换后的数据不是一个整型数就通过消息框来显示字符串<br>else<br>if (V=0)or(V=1)or(V=2) then <br>ExitWindowsEx(V,0) <br>//调用Windows的API函数(V=0表示重新登录、<br>V=1表示关机、V=2表示重启动)<br>else<br>Application.MessageBox(Str,'提示信息',<br>MB_OK+MB_ICONINFORMATION); <br>//转换后数据不为0、1、2时在消息框内显示字符串<br>end;<br><br><br>以上是在网上找的小程序,因为要用到其中的远程控制:关机,重启。<br>但是自己做了以后只能实现注销一个功能,请各位哥哥姐姐大虾帮看下,关机和重启的功能错了么?错在哪里?怎么实现呢?先谢谢各位拉:)
 
需要取得关机权限
 
在哪设置权限呀?谢谢
 
ExitWindowsEx(EWX_REBOOT, 0);重启<br>ExitWindowsEx(EWX_SHUTDOWN OR EWX_POWEROFF, 0);关机
 
谢谢各位
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部