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

来源:互联网 发布:阿里云退款电话 编辑:程序博客网 时间:2024/05/21 03:20

    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#源码功能:

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

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

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


C#加载第三方Dll:

         首先声明dll文件名,dll一定要放在可执行程序所在目录,方便加载;然后声明函数名。

如:创建视频窗口,参数:父窗口;返回:创建的视频窗口。

    [DllImport("NNScreen.dll")]

    publicstaticextern Int32 NNSCreateWindow(IntPtrInt32Parent);

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

 

C#回调函数使用

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

public delegateInt32 pDataRec(UInt32userData,stringstrUser,IntPtr pdata, intilen,intidatatype);

声明dll中设置回调的函数接口(由Dll提供)

    [DllImport("NNScreen.dll")]

public static externvoid NNSSetCallBack(pDataRec  Callback,UInt32handle);

 

IntPtr转字符String:

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

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

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

byte []bt=newbyte[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#开发源码下载


0 0
原创粉丝点击