三、編寫被控程序
---- 1、新建一個(gè)項(xiàng)目Server.dpr,并把一個(gè)TServerSocket元件放到Form上,它的屬性設(shè)置如下:Active設(shè)為True;Port設(shè)為100,其它屬性按默認(rèn)值。
---- 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); //處理接收的字符串,首先轉(zhuǎn)換字符串為整數(shù)
if Code< >0 then
Application.MessageBox(Str,'提示信息',
MB_OK+MB_ICONINFORMATION)
//如果轉(zhuǎn)換后的數(shù)據(jù)不是一個(gè)整型數(shù)就通過(guò)消息框來(lái)顯示字符串
else
if (V=0)or(V=1)or(V=2) then
ExitWindowsEx(V,0)
//調(diào)用Windows的API函數(shù)(V=0表示重新登錄、
V=1表示關(guān)機(jī)、V=2表示重啟動(dòng))
else
Application.MessageBox(Str,'提示信息',
MB_OK+MB_ICONINFORMATION);
//轉(zhuǎn)換后數(shù)據(jù)不為0、1、2時(shí)在消息框內(nèi)顯示字符串
end;
---- 3、修改項(xiàng)目文件,不讓窗口顯示并且防止它運(yùn)行兩次,修改begin和end之間的代碼如下:
begin
Application.Initialize;
if FindWindow('TForm1','Form1')=0 then begin
//當(dāng)沒(méi)有找到Form1時(shí)執(zhí)行下面代碼
Application.ShowMainForm:=False; //不顯示主窗口
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.
四、注意事項(xiàng)
---- 1、網(wǎng)絡(luò)要裝配正確并安裝TCP/IP協(xié)議,且要正常運(yùn)行。
---- 2、首先要運(yùn)行被控程序。
---- 3、必須知道對(duì)方的IP地址或主機(jī)名。
---- 上述程序用Delphi5.0編寫,在Windows98對(duì)等網(wǎng)、WindowsNT4.0局域網(wǎng)以及Internet上運(yùn)行通過(guò)。最后要聲明的是此程序由于能夠控制對(duì)方的計(jì)算機(jī),在實(shí)驗(yàn)時(shí)要事先經(jīng)過(guò)他人同意,不要給別人造成影響。