您的位置:首页 > 编程语言 > C#

NN远程桌面SDK之C#开发源码

2016-10-31 13:20 1276 查看
    NN远程控制软件可方便的用于查看远程屏幕,控制远程电脑。该系统由远程协助软件(NNHelp)和远程桌面服务(NNRdp)两部分组成。在无人值守电脑或服务器上安装远程桌面服务NNRdp,该软件随电脑开机自动运行,自动接受连接。在需要人工操作的电脑上安装NNHelp,可用于控制其他电脑(NNRdp服务)或邀请别人远程协助操作自己的电脑。具有常用客服功能,如:文字聊天,屏幕截图和邀请远程协助三大功能,客服远程电脑用得着哦。

官网下载:http://www.nnv1.com/screen.htm
系统特点

(1)  软件不需要注册,无需账号,自动分配ID号,并可随意更改自ID号;
(2)  可设置屏幕质量:8位色,4位色,真彩色。适应不同的网络带宽要求;
(3)  可发送文字消息,向客服发起远程协助请求,发送文字信息,或屏幕截图。
(4)  分开使用更安全,NNHelp不自启动,不后台运行,不自动接受远程,被邀请者才可以远程。被控前需要你做权限确认(是否允许复制文件和文字)。NNRdp服务端在后台自动运行,只有自己允许的ID号才可以连接。

 

使用限制:NNhelp可免费使用,其远程控制功能提供SDK接口用于二次开发。通过二次开发接口,可以方便的给自己的软件产品增加远程控制(协助)功能。二次开发语言支持c++,VB,C#,Delphi,以及android手机平台,提供二次开发Demo及免费测试服务器(正式版服务器授权需要购买)。

 

C#开发源码

NN远程控制组件提供简单的二次开发接口,可快速实现远程控制功能。支持各种语言二次开发。如:c++,VB,C#,Delphi,以及android手机平台。C#源码功能:

 登陆服务器获取我的ID号(可选中固定ID登陆);
连接对方ID,控制远程机器(可直接链接或强制服务器中转链接);
设置远程屏幕颜色,是否去掉桌面背景和Aero主题。是否允许控制;
 发送接收文字消息。断开当前链接。

C#代码中用到一下技术算法:、

C#加载第三方Dll
C#回调函数的使用。
IntPtr转字符String。

C#加载第三方Dll:

         首先声明dll文件名,dll一定要放在可执行程序所在目录,方便加载;然后声明函数名。
如:创建视频窗口,参数:父窗口;返回:创建的视频窗口。
    [DllImport("NNScreen.dll")]
    public
staticextern Int32 NNSCreateWindow(IntPtrInt32Parent);

之后就可以在代码中使用dll导出的函数。

 

C#回调函数使用

    回调函数是一个在自己的程序中的实现的函数,该函数可以被Dll调用,比如NN远程控制组件在收到消息后要通知给C#程序,就通过调用这个回调函数来通知C#程序。首先声明一个回调函数名称,我这里命名为pDataRec,参数取决于dll中声明的回调接口。

public delegate
Int32 pDataRec(UInt32userData,
stringstrUser,
IntPtr pdata, int
ilen,int
idatatype);
声明dll中设置回调的函数接口(由Dll提供)
    [DllImport("NNScreen.dll")]
public static extern
void NNSSetCallBack(pDataRec  Callback,
UInt32handle);

 

IntPtr转字符String:

Dll中可能向C#代码传输大量的字符数据,可以直接声明为string 类型,但是string类型默认是unicode编码类型,对于ansi编码类型中的汉字就不适合了,这时候可以通过Marshal.PtrToStringAnsi来转换。

如:string str=Marshal.PtrToStringAnsi(pBuf);

另外对于非汉字字符,也可以通过byte直接转换:

byte []
bt=new
byte
[nLen];

Marshal.Copy(pBuf,bt,0,nLen);

String str=bt[0].ToString();

软件界面截图:



登录后,输入对方ID,连接对方,连接成功后可看到对方桌面:



 

可选择自动接受远程或弹出确认框手动确认,如下图选择确认框:

 



安卓端远程控制电脑:


 

远程控制组件调用流程

【受控端】

1、创建组件

   参数:父窗口句柄;

   返回:创建的组件窗口句柄。

    public static extern Int32 NNSCreateWindow(IntPtr Int32Parent);

2、创建远程窗口

   参数1:父窗口句柄

   参数2:可忽略

   返回:远程窗口句柄,可通过这个句柄通过SetWindowText设置窗口标题。

   public static extern int NNSInitVideoDevice(IntPtr Int32Show,intnDevice);

3、设置消息回调函数

   参数1:回调函数

   参数2:用户自己设置数据。随意

   public static extern void NNSSetCallBack (pDataRec CallbackFunction, UInt32 handle);

  4、 回调函数处理:

   参数1:用户自己设置数据。

   参数2:对方用户ID

   参数3:收到的对方数据,或状态字符

   参数4:收到数据长度。-1表示当前登录或连接状态。

   参数5:收到数据类型:10表示对方发的文字。255表示设置我的ID返回情况。

   返回:请返回0

   function nncallback2(userData:integer; strUser:Pointer; pBuf:Pointer; nLen:integer; nType:integer):integer; stdcall;

   状态字符:(nLen=-1时 pBuf 对应的意思。

'登陆失败!'

'登录成功'

'连接成功!'

'停止!'  (说明:表示断开远程来年姐。停止!后面可能还有文字说明具体原因。)

'连接失败'

'不在线'

其他自己根据文字内容去理解。具体细节参考Demo使用。

5、设置是否允许远程操作

   参数:1(允许),0(不允许)

   返回:设置后的值。

   public static extern int NNSSetDevice(int nDevice);

6:删除组件,软件关闭时调用。

public static extern void NNSDestory();

【主控端】

前面5点与受控端一样,略...

7、设置远程屏幕颜色。

   参数:颜色值:4,8,32

   返回:设置后的值。

   public static extern int NNSSetDevice(int nDevice);

8、发起连接

   参数1:对方ID

   阐述2:连接方式:0,不中转,1连接失败后才中转.2强制中转。

   返回:1发送出去,0发送失败。

   public static extern Int32 NNSConnectName(String strUser,Int32bUserServer);

9、断开连接:

   参数:无

   返回:无

   void NNSStopChat();

10、发送文字给对方:

   参数1:用户ID,发送给当前连接方,无需指定,用空字符代替。

   参数2:要发送的字符串数据。

   参数3:要发送的字节数。-1 表示就是当前字符串的长度。

   参数4:数据类型,目前用10来代替文字。 255表示设置我的ID。

   返回:1发送出去,0未发送出去。

   public static extern int NNSSendData(String strUser,StringstrText, int nLen , byte nType);

 

完整源码下载地址:http://www.nnv1.com/Com_Screen.htm点击C#开发源码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息