远程控制编辑本段回目录
Pan/Tilt/Zoom远程控制主要是指网络摄像机有没有远程控制功能,以及远程控制功能的通讯接口是哪种。现有的网络摄像机般都支持这三种远程控制。并且通讯接口大部分用的都是RS 485 (TxD,RxD)。
远程控制软件原理编辑本段回目录
明天你在哪儿上班?如果有人这么问你,你一定会说,当然是办公室了。不过,如果告诉你在家上班的话,你是否会高兴异常。在电脑网络发达的今天,在家上班并不是难事,我们需要做的只不过是通过远程控制来管理你办公室的办公设备,例如电脑、打印机等等。
电脑中的远程控制技术,始于DOS时代,只不过当时由于技术上没有什么大的变化,网络不发达,市场没有更高的要求,所以远程控制技术没有引起更多人的注意。但是,随着网络的高度发展,电脑的管理及技术支持的需要,远程操作及控制技术越来越引起人们的关注。远程控制一般支持下面的这些网络方式:LAN、WAN、拨号方式、互联网方式。此外,有的远程控制软件还支持通过串口、并口、红外端口来对远程机进行控制(不过,这里说的远程电脑,只能是有限距离范围内的电脑了)。传统的远程控制软件一般使用NETBEUI、NETBIOS、IPX/SPX、TCP/IP等协议来实现远程控制,不过,随着网络技术的发展,目前很多远程控制软件提供通过Web页面以Java技术来控制远程电脑,这样可以实现不同操作系统下的远程控制,例如数技通科技有限公司在去年就推出了全球第一套基于中文JAVA的跨平台远程控制软件――易控。
远程控制软件的原理:
远程控制软件一般分两个部分:一部分是客户端程序Client,另一部分是服务器端程序Server(或Systry),在使用前需要将客户端程序安装到主控端电脑上,将服务器端程序安装到被控端电脑上。它的控制的过程一般是先在主控端电脑上执行客户端程序,像一个普通的客户一样向被控端电脑中的服务器端程序发出信号,建立一个特殊的远程服务,然后通过这个远程服务,使用各种远程控制功能发送远程控制命令,控制被控端电脑中的各种应用程序运行,我们称这种远程控制方式为基于远程服务的远程控制(图1-1为网络拓扑图)。通过远程控制软件,我们可以进行很多方面的远程控制,包括获取目标电脑屏幕图像、窗口及进程列表;记录并提取远端键盘事件(击键序列,即监视远端键盘输入的内容);可以打开、关闭目标电脑的任意目录并实现资源共享;提取拨号网络及普通程序的密码;激活、中止远端程序进程;管理远端电脑的文件和文件夹;关闭或者重新启动远端电脑中的操作系统;修改Windows注册表;通过远端电脑上、下载文件和捕获音频、视频信号等。
远程控制 |
(图1-1:一对一远程控制网络拓扑图)
前面我们所说的是一台电脑对一台电脑的情况,其实,基于远程服务的远程控制最适合的模式是一对多,即利用远程控制软件,我们可以使用一台电脑控制多台电脑,这就使得我们不必为办公室的每一台电脑都安装一个调制解调器,而只需要利用办公室局域网的优势就可以轻松实现远程多点控制了(图1-2为网络拓扑图)。在进行一台电脑对多台远端电脑进行控制时,我们发现,远程控制软件似乎更像一个局域网的网络管理员,而提供远程控制的远程终端服务就像极了办公室局域网的延伸。这种一对多的连接方式在节省了调制解调器的同时,还使得网络的接入更加安全可靠,网络管理员也更易于管理局域网上的每一台电脑。
远程控制 |
(图1-2:一对多远程控制网络拓扑图)
远程控制技术的应用:
下面让我们来看看远程控制技术到底能为我们带来什么样的应用:
1.远程办公。
这种远程的办公方式不仅大大缓解了城市交通状况,减少了环境污染,还免去了人们上下班路上奔波的辛劳,更可以提高企业员工的工作效率和工作兴趣。
2.远程技术支持。
通常,远距离的技术支持必须依赖技术人员和用户之间的电话交流来进行,这种交流既耗时又容易出错。许多用户对电脑知道得很少,然而当遇到问题时,他们必须向无法看到电脑屏幕的技术人员描述问题的症状,并且严格遵守技术人员的指示精确地描述屏幕上的内容,但是由于他们的电脑专业知识非常少,描述往往不得要领,说不到点子上,这就给技术人员判断故障制造了非常大的障碍。即使技术人员明白了用户电脑的问题所在,在尝试解决问题时,技术人员可能会指导用户执行一系列复杂的命令,而这个过程对用户来说是十分困难的,因为技术人员要依靠自己的语言来“操纵”用户的鼠标和键盘简直是太难了,如果用户不能正确地遵照指示去做,问题可能会进一步恶化,电脑很可能会因为错误的操作导致系统的崩溃。这样一来,往往是技术人员要为十分简单的一个问题和用户说上十几分钟,甚至会专程跑到很远的用户那里帮助解决问题,而用户往往因为问题还没有解决,只好将电脑闲置不用,单等技术人员上门来解决问题。有了远程控制技术,技术人员就可以远程控制用户的电脑,就像直接操作本地电脑一样,只需要用户的简单帮助就可以得到该机器存在的问题的第一手材料,很快就可以找到问题的所在,并加以解决。
3.远程交流。
利用远程技术,商业公司可以实现和用户的远程交流,采用交互式的教学模式,通过实际操作来培训用户,使用户从技术支持专业人员那里学习示例知识变得十分容易。而教师和学生之间也可以利用这种远程控制技术实现教学问题的交流,学生可以不用见到老师,就得到老师手把手的辅导和讲授。学生还可以直接在电脑中进行习题的演算和求解,在此过程中,教师能够轻松看到学生的解题思路和步骤,并加以实时的指导。
4.远程维护和管理。
网络管理员或者普通用户可以通过远程控制技术为远端的电脑安装和配置软件、下载并安装软件修补程序、配置应用程序和进行系统软件设置。由于同事们都知道笔者经常上网,喜欢试用一些好玩的软件,家里的电脑中往往会有一些好玩意儿,所以单位常有人问我要一些稀奇古怪的软件,让我帮他们也给家中的电脑装上,但是大家的家离得都很远,只好经常用软盘拷贝小软件到单位去交给同事,还要麻麻烦烦地给他们讲解一番安装和使用方法,甚至有需要给他们写个简要说明书的时候。现在,如果他们的家中有一台电脑需要安装什么软件,我就要先问问他们,你们的电脑支持远程控制吗?
远程控制篇:服务端程序的隐藏编辑本段回目录
远程控制篇:服务端程序的隐藏
1 按ctrl+alt+del时不出现在关闭程序框
function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord;
stdcall; external 'KERNEL32.DLL';
不出现
RegisterServiceProcess(GetCurrentProcessID, RSPSIMPLESERVICE);
出现
RegisterServiceProcess(GetCurrentProcessID, RSPUNREGISTERSERVICE);
2 程序的图标不出现在任务栏
在Application.Initialize;后加上
Application.ShowMainForm:=False;
以上做法在WIN2000下是无效的。
编程软件如VC,DELPHI中都带有进程查看工具。
远程控制篇:通过机器名得到IP地址 通过IP地址得到机器名编辑本段回目录
远程控制篇:
通过机器名得到IP地址
function procedure TForm1.nametoip(name:string):string;
var
WSAData: TWSAData;
HostEnt: PHostEnt;
begin
result:='';
WSAStartup(2, WSAData);
HostEnt := gethostbyname(PChar(name));
if HostEnt nil then
begin
with HostEnt^ do
result:= Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
end;
WSACleanup;
end;
通过IP地址得到机器名
function iptoname(ip:string):string;
var
WSAData:TWSAData;
p:PHostEnt;
InetAddr:dword;
begin
WSAStartup(2, WSAData);
InetAddr:= inet_addr(PChar(IP));
try
p:=GetHostByAddr(@InetAddr, Length(IP), PF_Inet);
result:=p^.h_name;
except
result:='';
end;
end;
远程控制篇:获得网络邻居所有机器名编辑本段回目录
procedure TForm1.Button1Click(Sender: TObject);
VAR
command:string ;
comline: pchar ;
begin
command:='COMMAND.COM /C net view>c:~~~.txt';
comline:=pchar(command);
WinExec(comline, sw_hide);
timer1.Enabled:=true;
end;
每秒试一次
procedure TForm1.Timer1Timer(Sender: TObject);
var f:tstringlist;
ll,ii:integer;
s1,s:string;
b:bool;
begin
f:=tstringlist.Create;
try
f.LoadFromFile('c:~~~.txt');
except
end;
if f.Count>10 then begin
memo1.Clear;
memo1.lines.add(f.text);
timer1.Enabled:=false;
f.Free;
{去掉多余的行和'\'}
for ll:=memo1.lines.count-1 downto 0 do begin
if strpos(pchar(memo1.lines.strings[ll]),'\')=nil then
memo1.lines.delete(ll)
else
memo1.lines.Strings[ll]:=delxxx(memo1.lines.Strings[ll]);
{自编1个去'\'的函数}
end;
timer1.enabled:=False;
end;