Oray开放平台开发指引

1. 概述

    SLAPI是Oray贝锐科技有限公司开发的一套基于产品向日葵的开发库,该库可以实现以点对点为通讯方式的远程桌面、远程文件、远程开机以及用户自定义的远程数据通讯。使用该开发库时,开发者无须关心点到点之间的通讯细节,以及通讯方式。SLAPI会以P2P或服务器中转等方式为通讯提供可靠的数据传输服务。

2. 开发者账号

    使用SLAPI之前,你需要先拥有一个Oray帐户,可以通过https:www.oray.com的右上角的注册按钮进行注册。如图:

image

    拥有帐户后,进入http://developer.oray.com(开放平台的网址),进入开发者认证页面,填写必要资料并提交开发者申请。如图:

    注册后,进入我的应用页面创建应用,创建成功后,在应用详情中看到自己的APP
ID 和 APP KEY,有了这两个信息,就可以使用SLAPI来开发自己的应用了。如图:

3. 支持平台

    目前SLAPI支持Window,Linux,Mac系列平台,而其他系统平台也将会尽快推出。

4. 支持语言

    目前SLAPI以纯C加二进制库实现方式提供接口,只要你的开发环境可以调用C函数即可。

5. 模型

    通常情况下开发出的应用会是2个APP,一个主控制端,一个被控制端,当然为了主控端得到被控端的连接信息,你可能会需要第三个自行开发的应用充当中间人的角色来传递连接信息。以下为一个完整应用的拓扑图:

image

    主控与被控是两个大的对象,在它们内部维护了很多会话,这些会话可以动态的创建与销毁,每个会话都有各自特殊的功能,如图:Desktop会话可以实现主控与被控之间的远程桌面,File会话可以实现远程文件功能。

    “你的服务器”用来传递被控端的连接信息与会话信息,让主控制端可以与被控制端进行通讯。

    而“OrayServer”则默默的在背后为你的应用程序提供必要的通讯服务,保证你应用的数据传输。

6. 使用规范

1. 目录结构

    在开发库下你可以看到以下目录include、lib、bin、doc、samples。

    1. include目录:所有SLAPI使用的API头文件,目前只有slsdk.h文件,用户只需要包含该文件即可使用SLAPI所有功能

    2. bin目录:放有SLAPI运行时库,Windows下为slsdk.dll文件,运行时请将它放到运行程序所在的目录。放有SLAPI编译所需要的链接库,Windows下为slsdk.lib,编译时请链接该库

    3. doc目录:所有SLAPI的使用说明与相关文档

    4. samples目录:所有SLAPI应用实例

    使用开发库分为三个阶段,1:环境初始化,2:创建主/被控制端,3:创建会话。

2. 环境初始化

    使用SLInitialize函数初始化SLAPI环境。同样在进程退出前请调用SLUninitialize函数退出并析构整个环境。

    另外在整个生命期中,可以使用SLGetLastError函数来获取当前的错误代码,方便你调试自己的应用程序,也可以使用SLSetLastError函数来设置当前的错误代码。最后,可以使用SLGetErrorDesc函数将错误代码转化为文本信息,方便查看。

3. 创建被控制端

    使用SLCreateClient函数创建被控制端,然后使用SLSetClientCallback函数设置被控制端的事件回调函数,这样就可以获取控制端的状态和事件信息。

    使用SLClientLogin函数来登录到Oray服务器,登录成功后利用SLGetClientAddress函数来获取被控制端的连接信息,使用此信息主控端就可以与被控制端通讯了。注意:当回调事件为SLCLIENT_EVENT_ONLOGIN时,才算登录成功。

    当不再使用这个被控制端时,可以使用SLDestroyClient函数将其销毁。

4. 创建主控制端

    使用SLCreateRemote函数创建主控制端。

    使用SLDestroyRemote函数销毁主控制端

5. 创建被控制端会话

    当被控制端创建完后,就可以创建会话了,每种功能的会话都有固定的API来创建,如SLCreateClientSession函数用来创建远程桌面的会话,所有创建后的会话,都可以使用SLDestroyClientSession函数来销毁。

    被控制端创建的所有会话都有一个会话序列号(字符串形式),使用该序列号,主控制端就可以连接指定会话了,这个序列号可以使用SLGetSessionName函数来获取。

    最后所有的会话在API中都定义为SLSESSION类型,主控制端也是如此。

    注意:被控端会话只能使用一次,一旦被主控端连接该会话后就失效,不能再连接。请销毁后再创建新的使用。被控端会话可以同时创建多个

6. 创建主控制端会话

    当主控制端创建完后,就可以创建会话了,每种功能的会话都有固定的API来创建,如SLCreateRemoteSession函数用来创建远程桌面的会话,该函数创建的会话用来和被控制端使用SLCreateClientSession创建出来的会话对接并通讯。

    主控制端创建会话与被控制端创建会话略有不同,它需要提供被控制端的连接信息和会话序列号信息,这两个信息可以使用上面所提到的SLGetClientAddress函数和SLGetSessionName函数来获取。

7. 快速集成

    集成的大致流程如下图所示。如果远程只是软件产品的一小部分,可直接在发起远程的时候顺序调用上述API,而不必在程序初始化阶段就调用登录的API(这样做相当于是与服务器保持长连接,Demo示例为此模式),建议是在需要远程的时候登录,断开远程的时候销毁。

7. WEB 服务

    当开启了web服务后,可以用websocket连接进来控制或获取被控端的状态。

1. 协议说明

    Web服务传输协议用的是json格式数据包。每个json数据包里都应该包含id和name字段。Id是一个不重复的整形,name是调用的方法名。

    例子:

{

    “id” : 1, //包id

    “name” : “newsession” //方法名,newsession为创建一个新的远程会话

    “type” : type //会话类型

}

    如果调用的方法有附带参数,要把参数放在data字段下。

    例子:

{

    “id” : 2, //包id

    “name” : “destroysession”, //方法名,destroysession为销毁会话

    “data” : {

                 “sessionid” : 1 //销毁sessionid等于1的会话

             }

}

    服务端收到请求数据后,返回请求的id、name以及处理结果code,code等于0表示成功,其他值参考SLGetLastError的返回值

    例子:

{

    “id” : 1, //包id

    “name” : “newsession”, //方法名,newsession为创建一个新的远程桌面会话

    “code” : 0, //操作结果,0表示成功

    “data” : {
                 “sessionid” : 0 //sessionid

                 “address” : “xxxxxx” //服务器地址

                 “sessionname” : “xxxxxx” //session
             }

}

    客户端接收到返回值后,应该判断id是否为发出请求的id,确保正确的收到返回结果。

2. Web 服务提供的方法

    Web每一次发送请求都会得到对应请求操作的执行结果,即一问一答;对于特定的事件,服务器内部会创建额外的监听,当状态发生改变,会主动以事件通知的形式推送给客户端。为了保证Web多连接的同步,服务器的被动响应和主动通知都采用广播的形式,一旦外部操作或内部变化,所有的连接都能及时收到同一通知。

    下表1-7为web的请求方式及返回说明,8为服务器主动通知事件,9为会话回调通知。

 1.OPENID登录

  name: ”login_openid”

  参数:

      openid:开发者的ID号

      openkey:开发者ID对应的验证码

 例子:

 {

     “id” : 1,

     “name” : “login_openid”,

     “data” : {

                  “openid”  : “xxxxxx”,

                  “openkey” : “xxxxxx”

              }

 }

 返回:


 {

      “id”   : 1,

      “name” : “login\_openid”,

      “data” : “”,

      “code” : 0 //参考10.错误代码

 }






 2.License登录

     name: ”login\_license”

     参数:

       address:服务器地址

       license:服务器license

     例子:

     {

        “id” : 1,

        “name” : “login\_license”,

        “data” : {

                     “address” : “xxxxxx”,

                     “license” : “xxxxxx”

                 }

     }

    返回:

    {

        “id” : 1,

        “name” : “login\_license”,

        “data” : “”,

        “code” : 0 //参考10.错误代码

    }





   3.注销

      name: ”logout”

      例子:

     {

         “id” : 2,

         “name” : “logout”,

     }

     返回:

     {

         “id” : 2,

         “name” : “logout”,

         “code” : 0 //参考10.错误代码

     }







 4.创建远程桌面会话

    name: ”newsession”

    例子:

    {

        “id” : 3,

        “name” : “newsession”

        “type” :0

    }

    返回:

    {

        “id” : 3,

        “name” : “newsession”,

        “code” : 0, //参考10.错误代码

        “data” : {

                      “address” : “xxxxxx”,

                      “sessionid” : 0,

                      “sessionname” : “xxxxxx”

                 }

     }







 5.销毁会话

 name: ”destroysession”

 参数:

    sessionid: 要销毁的sessionid

 例子:

 {

     “id” : 4,

     “name” : “destroysession”,

     “data” : {

                  “sessionid” : 1

              }

 }

返回:

{

     “id” : 4,

     “name” : “destroysession”,

     “data” : “”,

     “code” : 0 //参考10.错误代码

}

 6.开启远程桌面

 name: ”assist”

 参数:

  address: 地址

  session:会话

例子:

{

    “id” : 5,

    “name” : “assist”,

    “data” : {

                 “address” : “xxxxxx”,

                 “session” : ”xxxxxx”

             }

}

返回:

{

     “id” : 5,

     “name” : “assist”,

     “data” : “”,

    “code” : 0 //参考10.错误代码

}





 7.获取当前状态

 name: ”get\_status”

 例子:

   {

       “id” : 6,

       “name” : “get\_status”,

   }

 返回:

  {

      “id” : 6,

      “name” : “get\_status”,

      “code” : 0, //参考10.错误代码

      “data” : {

                    “is\_logginned” : true,

                   “session” : [

                               {

                                   “addr” : “xxxxxx”,

                                   “connected” : true,

                                   “name” : “xxxxxx”,

                                   “sessionid” : 0

                              }

                                { .... }

                                     ...

                                { ... }

                              ] //session集合

              }

     }





 8.事件通知

 事件通知是服务端主动推送的,为了防止id重复,所以json包是不带id字段的

 name: ”event”

 参数:

 evnet: 事件ID

 例子:

 {

     “name” : “evnet”,

     “data” : {

                 “evnet” : 1 //参考11.被控端事件代码
              }

 }

注:登录会触发连接,登录成功(or失败)事件,注销会触发断开连接事件。





 9.会话回调通知

 当创建一个会话后,会建立一个关于此会话的回调接口,当此会话状态发生变化时,会触发此回调事件。

 name: ”sessionevt”

 参数:

 evt: 事件ID

 id: 会话ID

 例子:

 {

     “name” : “sessionevt”,

     “data” : {

                   “evnet” : 1, //参考12.会话事件代码

                   “id” : 0 //会话ID

              }

 }

 注:assist会触发其连接事件,destory和手动关闭会触发其断开连接事件。

3. 扩展

    可以根据自己的需求对协议进行扩展。调用API
SlSetWebServerFilter方法可以设置一个过滤方法,在过滤方法里,你可以尽情发挥。

提示:

  1. SlWebServerSend方法可以想web客户端发送数据。

  2. 过滤方法里返回true,代表已经处理了该数据,底层将不会再处理

8. API 详细说明


1. SLInitialize

原型:bool SLInitialize(void);

功能:初始化正个SLAPI环境

返回:是否初始化成功

说明:在调用所有其他任何API之前调用,总之是应用程序中第一个调用的API


2. SLUninitialize

原型:bool SLUninitialize(void);

功能:退出并析构整个SLAPI环境

返回:是否成功

说明:程序退出前调用,总之是应用程序中最后一个调用的API


3. SLGetLastError

原型:SLERRCODE SLGetLastError(void)

功能:获取最后的错误码

返回:返回SLERRCODE错误码

说明:除了SLInitialize函数之外,任何API函数返回错误时,都可以用该API来获取失败的原因。该错误码是基于TLS的,线程上保持安全。


4. SLSetLastError

原型:bool SLSetLastError(SLERRCODE errCode)

功能:设置最后的错误码

返回:是否设置成功

说明:通常情况下用户不需要使用该API来设置错误码。


5. SLGetErrorDesc

原型:const char* SLGetErrorDesc(SLERRCODE errCode)

功能:获取错误码详细说明

返回:详细信息,如果错误码不存在则返回“未知错误”


6. SLCreateClient

原型:SLCLIENT SLCreateClient(void)

功能:创建一个被控制端环境

返回:返回被控制端环境值,如果创建失败则返回SLCLIENT_INVAILD

说明:返回值将用于后面很多的被控制端API函数中


7. SLDestroyClient

原型:bool SLDestroyClient(SLCLIENT client)

功能:销毁一个被控制端环境

参数:client 由SLCreateClient创建出来的值

返回:是否销毁成功

说明:参数必须是由SLCreateClient函数创建出来的值,否则可能产生未定义后果


8. SLStartWebServer

原型:SUNLOGIN_API bool SLStartWebServer(SLCLIENT client, unsigned int nPort=0);

功能:开启web监听服务,用户可以用websocket连接进来控制或查看状态

参数

client 由SLCreateClient创建出来的被控制端环境

nPort 要监听的端口号,默认是17801

返回:如果创建失败则返回false

说明:web监听服务的协议参考


9. SLStopWebServer

原型:SUNLOGIN_API bool SLStopWebServer(SLCLIENT client);

功能:关闭web监听服务

参数

client 由SLCreateClient创建出来的被控制端环境

返回:如果失败则返回false


10. SlSetWebServerFilter

原型:SUNLOGIN_API bool SlSetWebServerFilter(SLCLIENT client,SLWEB_FILTER filter);

功能:关闭web监听服务

参数

client 被控制端环境

filter 函数指针

返回:如果失败则返回false


11. SlWebServerSend

原型:SUNLOGIN_API bool SlWebServerSend(SLCLIENT client,const void* pdata,unsigned int size);

功能:向web客户端发送数据

参数

client 被控制端环境

data 指向数据的指针

size 数据长度

返回:如果失败则返回false


12. SLSetClientCallback

原型:bool SLSetClientCallback(SLCLIENT client, SLCLIENT_CALLBACK pfnCallback, unsigned long custom)

功能:设置被控制端事件回调函数

参数

client 由SLCreateClient创建出来的被控制端环境

pfnCallback 回调函数,当被控制端发生事件时,会通过该函数回调

cusom 用户自定义参数,回调时内部程序会将此参数一并回调

返回:是否设置成功


13. SLClientLoginWithOpenID

原型:bool SLClientLoginWithOpenID(SLCLIENT client, const char* pstrOpenID, const char* pstrOpenKey, const char* pstrDomain = “”, bool bUseSSL = false)

功能:被控制端登录服务器

参数

client 由SLCreateClient创建出来的被控制端环境

pstrOpenID 开发者的ID号

pstrOpenKey 开发者ID对应的验证码

pstrDomain OpenID登陆验证所指定的服务器的域名(可以默认)

bUseSSL 配合pstrDomain使用,是否使用SSL

返回:是否登录出错,登录错出会返回false,但返回true不代码登录成功,如果想知道登录成功,必须通过回调SLCLIENT_EVENT_ONLOGIN事件得知

说明:开发者ID和验证码获取方式可参见本文“开发者账号”段落

14. SLClientLoginWithLicense

原型:bool SLClientLoginWithLicense(SLCLIENT client, const char* szAddr, const char* szLic)

功能:被控制端登录服务器

参数

client 由SLCreateClient创建出来的被控制端环境

szAddr 服务器地址

szLic 服务器lincese

返回:是否登录出错,登录错出会返回false,但返回true不代码登录成功,如果想知道登录成功,必须通过回调SLCLIENT_EVENT_ONLOGIN事件得知

说明:该方法是提供给购买了定制服务器的用户使用的


15. SLClientIsOnLoginned

原型:bool SLClientIsOnLoginned(SLCLIENT client)

功能:被控制端是否已经登录服务器

参数

client 由SLCreateClient创建出来的被控制端环境

返回:是否已经登录服务器


16. SLCreateClientSession

原型:SLSESSION SLCreateClientSession(SLCLIENT client, ESLSessionType eType)

功能:在被控制端环境中创建一个远程会话

参数

client 由SLCreateClient创建出来的被控制端环境

eType 会话类型

返回:会话,如果失败则返回SLSESSION_INVAILD


17. SLDestroyClientSession

原型:bool SLDestroyClientSession(SLCLIENT client, SLSESSION session)

功能:销毁一个会话

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

返回:是否销毁成功

说明:session必须是由SLCreateClient***Session函数创建出来的Session值,不然可能产生未定义后果


18. SLEnumClientSession

原型:unsigned int SLEnumClientSession(SLCLIENT client, SLSESSION* pSessionArray, unsigned int nArraySize)

功能:销毁一个会话

参数

client 由SLCreateClient创建出来的被控制端环境

pSessionArray 会话数组用于返回数据

nArraySize 会话数组长度,一般填256

返回:返回了多少个会话

说明:session必须是由SLCreateClient***Session函数创建出来的Session值,不然可能产生未定义后果


19. SLGetClientAddress

原型:const char* SLGetClientAddress(SLCLIENT client)

功能:获取被控制端连接地址

参数:client 由SLCreateClient创建出来的被控制端环境

返回:地址

说明:必须在收到SLCLIENT_EVENT_ONLOGIN事件后,即使用开发者账号登录成功后才能调用本API,不然返回的值将是无效值。将该返回值告诉主控端,主控端就可以和该被控制端通讯了


20. SLGetClientSessionName

原型:const char* SLGetClientSessionName(SLCLIENT client, SLSESSION session)

功能:获取被控制端某个会话的值

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

返回:会话值

说明:通过该值主控制端才能使用该会话的服务


21. SLClientSessionSendData

原型:unsigned long SLClientSessionSendData(SLCLIENT client, SLSESSION session, const char* lpData, unsigned long nLen)

功能:会话发送数据

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

lpData 发送的数据

nLen 发送的数据长度

返回:实际发送的字节数,返回0表示出错

说明:目前只适用于DataTrans类型的会话

22. SLClientSessionRecvData

原型:unsigned long SLClientSessionRecvData(SLCLIENT client, SLSESSION session, char* lpData, unsigned long nLen)

功能:会话接收数据

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

lpData 接收数据

nLen 准备接收的数据长度

返回:实际收到的字节数,返回0表示出错

说明:目前只适用于DataTrans类型的会话


23. SLGetClientSessionOpt

原型:bool SLGetClientSessionOpt(SLCLIENT client, SLSESSION session, ESLSessionOpt eOpt, char* pOptVal, unsigned int nOptLen)

功能:获取被控制端某个会话某个属性值

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

eOpt 属性名

pOptVal 属性值

nOptLen 属性值长度

返回:是否获取成功


24. SLSetClientSessionOpt

原型:bool SLSetClientSessionOpt(SLCLIENT client, SLSESSION session, ESLSessionOpt eOpt, const char* pOptVal, unsigned int nOptLen)

功能:设置被控制端某个会话某个属性值

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

eOpt 属性名

pOptVal 属性值

nOptLen 属性值长度

返回:是否设置成功


25. SLCreateRemote

原型:SLREMOTE SLCreateRemote(void)

功能:创建一个控制端环境

返回:返回被控制端环境值,如果创建失败则返回SLREMOTE_INVAILD

说明:返回值将用于后面很多的主控制端API函数中


26. SLDestroyRemote

原型:bool SLDestroyRemote(SLREMOTE remote)

功能:销毁一个控制端环境

参数:remote 由SLCreateRemote创建出来的主控制端环境

返回:是否销毁成功

说明:参数必须是由SLCreateRemote函数创建出来的值,否则可能产生未定义后果

27. SLSetRemoteCallback

原型:bool SLSetRemoteCallback(SLREMOTE remote, SLREMOTE_CALLBACK pfnCallback, unsigned long custom)

功能:设置主控制端事件回调函数

参数

remote 由SLCreateRemote创建出来的主控制端环境

pfnCallback 回调函数,当被控制端发生事件时,会通过该函数回调

cusom 用户自定义参数,回调时内部程序会将此参数一并回调

返回:是否设置成功


28. SLCreateRemoteSession

原型:SLSESSION SLCreateRemoteSession(SLREMOTE remote, ESLSessionType eType, const char* pstrAddress, const char* pstrSession)

功能:创建远程会话

参数

remote 由SLCreateRemote创建出来的主控制端环境

eType 会话类型

pstrAddress 远程被控制端地址,由SLGetClientAddress函数返回的值

pstrSession 远程桌面会话名,由SLGetSessionName函数返回的值

返回:会话,如果失败则返回SLSESSION_INVALD


29. SLCreateRemoteEmptySession

原型:SLSESSION SLCreateRemoteEmptySession(SLREMOTE remote, ESLSessionType eType)

功能:创建远程空会话

参数

remote 由SLCreateRemote创建出来的主控制端环境

eType 会话类型

返回:会话,如果失败则返回SLSESSION_INVALD

说明:和SLCreateRemoteSession不同的是创建一个空会话,不进行连接,后面必须再使用SLConnectRemoteSession来连接会话


30. SLConnectRemoteSession

原型:SLSESSION SLConnectRemoteSession(SLREMOTE remote, SLSESSION session, const char* pstrAddress, const char* pstrSession)

功能:连接远程空会话

参数

remote 由SLCreateRemote创建出来的主控制端环境

pstrAddress 远程被控制端地址,由SLGetClientAddress函数返回的值

pstrSession 远程桌面会话名,由SLGetSessionName函数返回的值

返回:会话,如果失败则返回SLSESSION_INVALD

说明:只用于SLCreateRemoteEmptySession创建出来的会话


31. SLDestroyRemoteSession

原型:bool SLDestroyRemoteSession(SLREMOTE remote, SLSESSION session)

功能:销毁一个会话

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 由SLCreateRemote***Session创建出来的会话值

返回:是否销毁成功

说明:session必须是由SLCreateRemote***Session函数创建出来的Session值,不然可能产生未定义后果


32. SLRemoteSessionSendData

原型:unsigned long SLRemoteSessionSendData(SLCLIENT client, SLSESSION session, const char* lpData, unsigned long nLen)

功能:会话中发送数据,另一端会话会收到数据

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 会话

lpData 发送的数据

nLen 发送的数据长度

返回:实际发送的字节数

说明:目前只适用于DataTrans类型的会话


33. SLRemoteSessionRecvData

原型:unsigned long SLRemoteSessionRecvData(SLREMOTE remote, SLSESSION session, char* lpData, unsigned long nLen)

功能:会话接收数据

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

lpData 接收数据

nLen 准备接收的数据长度

返回:实际收到的字节数,返回0表示出错

说明:目前只适用于DataTrans类型的会话


34. SLGetRemoteSessionOpt

原型:bool SLGetRemoteSessionOpt(SLCLIENT client, SLSESSION session, ESLSessionOpt eOpt, char* pOptVal, unsigned int nOptLen)

功能:获取主控制端某个会话某个属性值

参数

client 由SLCreateRemote创建出来的主控制端环境

session 会话

eOpt 属性名

pOptVal 属性值

nOptLen 属性值长度

返回:是否获取成功


35. SLSetRemoteSessionOpt

原型:bool SLSetRemoteSessionOpt(SLREMOTE remote, SLSESSION session, ESLSessionOpt eOpt, const char* pOptVal, unsigned int nOptLen)

功能:设置主控制端某个会话某个属性值

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

eOpt 属性名

pOptVal 属性值

nOptLen 属性值长度

返回:是否设置成功


36. SLSetDesktopSessionPos

原型:bool SLSetDesktopSessionPos(SLREMOTE remote, SLSESSION session, int x,int y,int width,int height)

功能:设置远程桌面窗口的大小

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 会话

x x坐标

y y坐标

width宽度

height高度

返回:是否设置成功


37. SLSetClientProxy

原型:bool SLSetClientProxy(SLCLIENT client, const SLPROXY_INFO& proxy)

功能:设置被控端代理

参数

client 由SLCreateClient创建出来的被控制端环境

proxy代理信息

返回:是否设置成功

38. SLSetRemoteProxy

原型:bool SLSetRemoteProxy(SLREMOTE remote, const SLPROXY_INFO& proxy)

功能:设置被控端代理

参数

remote由SLCreateRemote创建出来的主控制端环境

proxy代理信息

返回:是否设置成功


39. SLSetDesktopSessionVisible

原型:bool SLSetDesktopSessionVisible( SLREMOTE remote, SLSESSION session )

功能:设置显示远程桌面

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

返回:是否设置成功


40. SLGetDesktopSessionOriginSize

原型:bool SLGetDesktopSessionOriginSize( SLREMOTE remote, SLSESSION session, int* width, int* height );

功能:获取远程桌面原图大小

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

width 桌面原图宽度

height 桌面原图高度

返回:是否设置成功


41. SLLoginWithOpenID

原型:bool SLLoginWithOpenID(SLCLIENT client, const char* pstrOpenID, const char* pstrOpenKey, const char* pstrDomain = “”, bool bUseSSL = false)

功能:功能同SLClientLoginWithOpenID, 简化名称

参数

client 由SLCreateClient创建出来的被控制端环境

pstrOpenID 开发者的ID号

pstrOpenKey 开发者ID对应的验证码

pstrDomain OpenID登陆验证所指定的服务器的域名(可以默认)

bUseSSL 配合pstrDomain使用,是否使用SSL

返回:是否设置成功


42. SLClientSendFile

原型:SLUINT32 SLAPI SLClientSendFile(SLCLIENT client, SLSESSION session, const wchar_t* filepath, bool resume )

功能:发送一个文件

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

filepath 发送文件的路径

resume 是否断点续传,否则重新发送文件

返回:文件id, 0代表失败


43. SLClientKillFile

原型:bool SLAPI SLClientKillFile(SLCLIENT client, SLSESSION session, SLUINT32 fid )

功能:取消发送文件

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

fid 文件id

返回:是否成功


44. SLClientGetFileName

原型:const wchar_t* SLAPI SLClientGetFileName( SLCLIENT client, SLSESSION session, SLUINT32 fid )

功能:获取文件路径名称

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

fid 文件id

返回:文件路径名称


45. SLClientGetFileSize

原型:SLUINT64 SLAPI SLClientGetFileSize( SLCLIENT client, SLSESSION session, SLUINT32 fid )

功能:获取传输的文件大小

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

fid 文件id

返回:文件大小


46. SLClientGetFileTransfered

原型:SLUINT64 SLAPI SLClientGetFileTransfered( SLCLIENT client, SLSESSION session, SLUINT32 fid )

功能:获取文件已传输的大小

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

fid 文件id

返回:文件已传输的大小


47. SLClientFileIsTransfering

原型:bool SLAPI SLClientFileIsTransfering( SLCLIENT client, SLSESSION session, SLUINT32 fid )

功能:文件是否正在传输中

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

fid 文件id

返回:true 正在传输,false 其他状态


48. SLClientFileIsDone

原型:bool SLAPI SLClientFileIsDone( SLCLIENT client, SLSESSION session, SLUINT32 fid );

功能:文件传输是否完成

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

fid 文件id

返回:true 传输完成 false 其他状态


49. SLClientFileIsKilled

原型:bool SLAPI SLClientFileIsKilled( SLCLIENT client, SLSESSION session, SLUINT32 fid );

功能:文件是否被取消传输

参数

client 由SLCreateClient创建出来的被控制端环境

session 会话

fid 文件id

返回:true 传输被取消 false 其他状态


50. SLRemoteSendFile

原型:SLUINT32 SLAPI SLRemoteSendFile(SLREMOTE remote, SLSESSION session, const wchar_t* filepath, bool resume )

功能:发送一个文件

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

filepath 发送文件的路径

resume 是否断点续传,否则重新发送文件

返回:文件id, 0代表失败


51. SLRemoteKillFile

原型:bool SLAPI SLRemoteKillFile(SLREMOTE remote, SLSESSION session, SLUINT32 fid )

功能:取消发送文件

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

fid 文件id

返回:是否成功


52. SLRemoteGetFileName

原型:const wchar_t* SLAPI SLRemoteGetFileName( SLREMOTE remote, SLSESSION session, SLUINT32 fid )

功能:获取文件路径名称

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

fid 文件id

返回:文件路径名称


53. SLRemoteGetFileSize

原型:SLUINT64 SLAPI SLRemoteGetFileSize(SLREMOTE remote, SLSESSION session, SLUINT32 fid )

功能:获取传输的文件大小

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

fid 文件id

返回:文件大小


54. SLRemoteGetFileTransfered

原型:SLUINT64 SLAPI SLRemoteGetFileTransfered(SLREMOTE remote, SLSESSION session, SLUINT32 fid )

功能:获取文件已传输的大小

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

fid 文件id

返回:文件已传输的大小


55. SLRemoteFileIsTransfering

原型:bool SLAPI SLRemoteFileIsTransfering(SLREMOTE remote, SLSESSION session, SLUINT32 fid )

功能:文件是否正在传输中

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

fid 文件id

返回:true 正在传输,false 其他状态


56. SLRemoteFileIsDone

原型:bool SLAPI SLRemoteFileIsDone( SLREMOTE remote, SLSESSION session, SLUINT32 fid );

功能:文件传输是否完成

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

fid 文件id

返回:true 传输完成 false 其他状态


57. SLRemoteFileIsKilled

原型:bool SLAPI SLClientFileIsKilled( SLREMOTE remote, SLSESSION session, SLUINT32 fid );

功能:文件是否被取消传输

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

fid 文件id

返回:true 传输被取消 false 其他状态


58. SLCreateClientEx

原型:bool SLAPI SLCreateClientEx( SLMODE mode );

功能:根据应用(UI,Service)场景创建向日葵客户端

参数

mode - 应用场景

返回:返回被控制端环境值,如果创建失败则返回SLCLIENT_INVAILD


59. SLOpenClientLog

原型:bool SLAPI SLOpenClientLog(SLCLIENT client, const char* path);

功能:启用被控制端的日志输出

参数

client 由SLCreateClient创建出来的被控制端环境

path 日志的输出路径

返回:是否设置成功


60. SLOpenRemoteLog

原型:bool SLAPI SLOpenRemoteLog(SLREMOTE remote, const char* path);

功能:启用主控制端的日志输出

参数

remote由SLCreateRemote创建出来的主控制端环境

path 日志的输出路径

返回:是否设置成功


61. SLSetCmdSessionPos

原型:bool SLSetCmdSessionPos(SLREMOTE remote, SLSESSION session, int x,int y,int width,int height)

功能:设置远程CMD窗口的大小

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 会话

x x坐标

y y坐标

width宽度

height高度

返回:是否设置成功


62. SLSetCameraSessionPos

原型:bool SLSetCameraSessionPos(SLREMOTE remote, SLSESSION session, int x,int y,int width,int height)

功能:设置远程摄像头窗口的大小

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 会话

x x坐标

y y坐标

width宽度

height高度

返回:是否设置成功


63. SLRemoteCameraOpen

原型:bool SLAPI SLRemoteCameraOpen(SLREMOTE remote, SLSESSION session, LONG dev_id);

功能:打开一个远程摄像头设备

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 会话

dev_id 摄像头的唯一标识,由SLRemoteCameraGetList函数获取

返回:是否打开成功


64. SLRemoteCameraClose

原型:bool SLAPI SLRemoteCameraClose(SLREMOTE remote, SLSESSION session);

功能:关闭当前正在使用的远程摄像头设备

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 会话

返回:是否关闭成功


65. SLRemoteCameraSetDefinition

原型:bool SLAPI SLRemoteCameraSetDefinition(SLREMOTE remote, SLSESSION session, ESLVideoDefinition eVD);

功能:设置当前摄像头的清晰度

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 会话

eVD ESLVideoDefinition枚举值,主要有标清,高清,超清

返回:是否设置成功


66. SLRemoteCameraGetList

原型:unsigned int SLAPI SLRemoteCameraGetList(SLREMOTE remote, SLSESSION session, CAMERA_INFO* infos = NULL, unsigned int nSize = 0);

功能:获取远程摄像头列表并返回摄像头个数,当infos为空时,此函数仅返回摄像头个数

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 会话

infos CAMERA_INFO结构体数组,用于保存摄像头列表

nSize 结构体数组大小

返回:返回摄像头设备个数


67. SLDiscoverWoiDevice

原型:bool SLAPI SLDiscoverWoiDevice(SLCLIENT client);

功能:扫描局域网内的开机棒设备,并通过SLCLIENT_WOI_CALLBACK回调返回设备的SN号

参数

client 由SLCreateClient创建出来的被控制端环境

返回:发送扫描请求成功或失败


68. SLBindWoiDevice

原型:bool SLAPI SLBindWoiDevice(SLCLIENT client, const char* pstrSN, const char* pstrMac, const char* pstrPassword);

功能:绑定局域网内的开机棒设备,并通过SLCLIENT_WOI_CALLBACK回调返回绑定结果

参数

client 由SLCreateClient创建出来的被控制端环境

pstrSN 要绑定的开机棒的SN号

pstrMac 要绑定开机的MAC地址(AABBCCDDEEFF)

pstrPassword 远程开机密码,与MAC地址一起唤醒设备

返回:发送绑定设备请求成功或失败


69. SLUnBindWoiDevice

原型:bool SLAPI SLUnBindWoiDevice(SLCLIENT client, const char* pstrSN, const char* pstrMac, const char* pstrPassword);

功能:解绑局域网内的开机棒设备,并通过SLCLIENT_WOI_CALLBACK回调返回解绑结果

参数

client 由SLCreateClient创建出来的被控制端环境

pstrSN 要解绑的开机棒的SN号

pstrMac 要绑定开机的MAC地址(AABBCCDDEEFF)

pstrPassword 远程开机密码,与MAC地址一起解绑设备

返回:发送解绑设备请求成功或失败


70. SLSetClientWOICallback

原型:bool SLAPI SLSetClientWOICallback(SLCLIENT client, SLCLIENT_WOI_CALLBACK pfnCallback, unsigned long custom);

功能:设置远程开机棒事件回调,包括发现,绑定和解绑

参数

client 由SLCreateClient创建出来的被控制端环境

pfnCallback 回调函数,当操作开机棒发生事件时,会通过该函数回调

cusom 用户自定义参数,回调时内部程序会将此参数一并回调

返回:设置回调成功或失败


71. SLSetRemoteWOIControl

原型:bool SLSetRemoteWOIControl(SLREMOTE remote, const char* pstrAddress, unsigned int nPort);

功能:设置远程开机服务器的ip和控制端口

参数

remote 由SLCreateRemote创建出来的主控制端环境

pstrAddress 远程开机服务器的IP地址

nPort 远程开机服务器的web控制端口

返回:设置成功或失败


72. SLSendWakeupCommand

原型:bool SLAPI SLSendWakeupCommand(SLREMOTE remote, const char* pstrMac, const char* pstrPassword);

功能:发送远程唤醒指令

参数

remote 由SLCreateRemote创建出来的主控制端环境

pstrMac 待唤醒设备的Mac地址(AABBCCDDEEFF)

pstrPassword 远程开机密码,与MAC地址一起唤醒设备

返回:发送唤醒成功或失败


73. SLSetRemoteWOICallback

原型:bool SLAPI SLSetRemoteWOICallback(SLREMOTE remote, SLREMOTE_WOI_CALLBACK pfnCallback, unsigned long custom);

功能:设置远程开机事件回调

参数

remote 由SLCreateRemote创建出来的主控制端环境

pfnCallback 回调函数,当远程开机指令响应时,会通过该函数回调

cusom 用户自定义参数,回调时内部程序会将此参数一并回调

返回:设置回调成功或失败


74. SLGetRemoteSysinfo

原型:unsigned int SLAPI SLGetRemoteSysinfo(SLREMOTE remote, SLSESSION session, const char* pstrQuery, const char* pstrContent);

功能:获取远程客户端的系统信息

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 会话

pstrQuery 查询字符串\<参见13>

pstrContent 查询内容\<参见13>

返回:当前操作的执行的编号(自1开始递增)


75. SLHideRemoteDesktopToolbarItem

原型:bool SLAPI SLHideRemoteDesktopToolbarItem(SLREMOTE remote, SLSESSION session, SLDesktopControlType eType);

功能:根据枚举值隐藏远程桌面工具栏上的对应模块

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 主控端桌面会话

eType 远程桌面工具栏上各控制模块的枚举值[SLDesktopControlType]

返回:是否设置成功


76. SLGetRemoteDesktopDevList

原型:unsigned int SLAPI SLGetRemoteDesktopDevList(SLREMOTE remote, SLSESSION session, SLDesktopDevType eType, SLBASE_INFO* infos = 0, unsigned int nSize = 0);

功能:获取远程桌面屏幕,会话,分辨率的信息列表并返回相应模块的个数,当infos为空时,此函数仅返回模块个数

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 主控端桌面会话

eType 远程桌面中各信息模块的枚举值[SLDesktopDevType]

infos SLBASE_INFO结构体数组,用于保存基本信息列表

nSize 结构体数组大小

返回:返回模块个数


77. SLSendRemoteDesktopCommand

原型:bool SLAPI SLSendRemoteDesktopCommand(SLREMOTE remote, SLSESSION session, SLDesktopCommandType eType, unsigned int nIndex = 0);

功能:发送远程桌面控制命令

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 主控端桌面会话

eType 远程桌面中各命令模块的枚举值[SLDesktopCommandType]

nIndex 索引值,只针对于切换屏幕,切换会话,切换分辨率等选择性的命令有效

返回:是否执行成功


78. SLGetRemoteDesktopCurState

原型:bool SLAPI SLGetRemoteDesktopCurState(SLREMOTE remote, SLSESSION session, SLDesktopStateType eType, unsigned int& nState);

功能:得到枚举的模块的当前状态值

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 主控端桌面会话

eType 远程桌面中各状态模块的枚举值[SLDesktopStateType]

nState [in]状态值,保存状态模块的当前状态值或索引值

返回:是否执行成功


79. SLRemoteDesktopScreenShot

原型:bool SLAPI SLRemoteDesktopScreenShot(SLREMOTE remote, SLSESSION session, const char* filepath);

功能:截取一张远程桌面图像并保存

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 主控端桌面会话

filepath 截屏文件的绝对路径(包含文件名)

返回:是否截屏成功


80. SLRemoteDesktopStartRecord

原型:bool SLAPI SLRemoteDesktopStartRecord( SLREMOTE remote, SLSESSION session, const char* filepath );

功能:远程桌面时,开启录像功能开始录像

参数

remote由SLCreateRemote创建出来的主控制端环境

session 主控端桌面会话

filepath 保存的录屏文件的全路径,包含文件名(后缀一般为.ts)

返回:是否开启录像成功


81. SLRemoteDesktopStopRecord

原型:void SLAPI SLRemoteDesktopStopRecord( SLREMOTE remote, SLSESSION session );

功能:远程桌面时,停止当前录像

参数

remote由SLCreateRemote创建出来的主控制端环境

session 主控端桌面会话

返回:无


82. SLSetRemoteDesktopPlatform

原型:bool SLAPI SLSetRemoteDesktopPlatform(SLREMOTE remote, SLSESSION session, SLPlatformType eType);

功能:远程桌面时手动设置被控制端的平台信息,主要用于在主控端显示不同样式的控制菜单

参数

remote由SLCreateRemote创建出来的主控制端环境

session 主控端桌面会话

eType被控端平台枚举值[SLPlatformType]

返回:是否设置成功


83. SLClientStartChat

原型:bool SLAPI SLClientStartChat(SLCLIENT client, SLSESSION session, bool bShow = true);

功能:被控端主动发起聊天,弹出聊天窗口

参数

client由SLCreateClient创建出来的被控制端环境

session 被控端桌面会话

bShow 是否显示窗口。如果为true,则为初始化创建窗口(仅针对Mac OSX有效)

返回:是否发起成功


84. SLClientEnableControl

原型:bool SLAPI SLClientEnableControl(SLCLIENT client, SLSESSION session, bool bEnable);

功能:被控端切换控制/观看模式

参数

client由SLCreateClient创建出来的被控制端环境

session 被控端桌面会话

bEnable是否为控制模式

返回:是否切换成功


85. SLGetClientSessionConnection

原型:bool SLAPI SLGetClientSessionConnection(SLCLIENT client, SLSESSION session, bool& isp2p, bool& islocal);

功能:获取被控端当前会话的连接信息(是否是p2p连接,是否是本地局域网互联)

参数

client由SLCreateClient创建出来的被控制端环境

session 会话

isp2p 是否是p2p连接

islocal 是否是本地局域网互联

返回:是否获取成功


86. SLGetRemoteSessionConnection

原型:bool SLAPI SLGetRemoteSessionConnection(SLREMOTE remote, SLSESSION session, bool& isp2p, bool& islocal);

功能:获取主控端当前会话的连接信息(是否是p2p连接,是否是本地局域网互联)

参数

remote由SLCreateRemote创建出来的主控制端环境

session 会话

isp2p 是否是p2p连接

islocal 是否是本地局域网互联

返回:是否获取成功


87. SLSetSshSessionPos

原型:bool SLSetSshSessionPos(SLREMOTE remote, SLSESSION session, int x,int y,int width,int height)

功能:设置远程SSH窗口的大小

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 会话

x x坐标

y y坐标

width宽度

height高度

返回:是否设置成功


88. SLSetFileMgrSessionPos

原型:bool SLSetFileMgrSessionPos(SLREMOTE remote, SLSESSION session, int x,int y,int width,int height)

功能:设置远程文件管理窗口的大小

参数

remote 由SLCreateRemote创建出来的主控制端环境

session 会话

x x坐标

y y坐标

width宽度

height高度

返回:是否设置成功

9. 会话属性

1. 概述

每种类型的会话都可以设置其属性达到不同的效果,如远程桌面可以设置eSessionOpt_window来设置其远程桌面的显示窗口,同样也可以获取某个属性的属性值。

ESLSessionOpt枚举了所有可以使用的会话属性,你可以使用SLGetClientSessionOpt和SLSetRemoteSessionOpt来获取会话属性,可以使用SLSetClientSessionOpt和SLSetRemoteSessionOpt来设置会话属性。

有的属性只能用在被控制端,有的属性只能用在主控制端,有的两者都可以使用,有的属性只能设置不能获取,有的属性只能获取不能设置。以下将详细介绍各个属性的使用方式。


2. eSLSessionOpt_window

适用环境:主控制端环境

适用会话:远程桌面会话,远程CMD会话,远程摄像头会话

适用方式:设置

功能:设置主控制端显示远程桌面的窗口句柄

参数:

pOptVal 窗口句柄指针,在Windows下为HWND*

nOptLen 窗口句柄字节数,在Windows下为sizeof(HWND)

3. eSLSessionOpt_deviceSource

适用环境:被控制端环境

适用会话:远程声音会话

适用方式:设置/获取

功能:设置被控制端传出声音是从声卡上传出还是麦克风传出

参数:

pOptVal 是否为麦克风传出,bool类型,true为是,false为否(即声卡传出)

nOptLen bool类型长度,即1个字节

4. eSLSessionOpt_connected

适用环境:被控制端环境

适用会话:所有会话

适用方式:获取

功能:获取当前会话是否已经连接还是未连接

参数:

pOptVal 是bool类型,true为已连接,false为未连接

nOptLen bool类型长度,即1个字节

5. eSLSessionOpt_ipport

适用环境:主控制端环境

适用会话:所有会话

适用方式:设置

功能:设置端口转发的本地服务的ip地址和端口

参数:

pOptVal const char*类型,格式为 ip:port,具体请参考示例程序

nOptLen const char*类型长度

6. eSLSessionOpt_savepath

适用环境:主控被控制端环境

适用会话:所有会话

适用方式:设置

功能:设置文件传输保存路径

参数:

pOptVal const wchar_t* 类型

nOptLen const wchar_t* 类型长度 * 2,具体请参考示例程序

10. 错误代码

代码(code) 定义 说明
0 SLERRCODE_SUCCESSED 成功
1 SLERRCODE_INNER 内部错误
2 SLERRCODE_UNINITIALIZED 未初始化
3 SLERRCODE_ARGS 参数错误
4 SLERRCODE_NOTSUPPORT 不支持
5 SLERRCODE_CONNECT_FAILED 网络连接失败
6 SLERRCODE_CONNECT_TIMEOUT 网络连接超时
7 SLERRCODE_SESSION_NOTEXIST 会话不存在
8 SLERRCODE_SESSION_OVERFLOW 会话溢出
9 SLERRCODE_SESSION_WRONGTYPE 会话类型错误
10 SLERRCODE_EXPIRED OPENID过期
11 SLERRCODE_REQUEST_FREQUENT 请求频繁

11. 被控端事件代码

代码(code) 定义 说明
0 SLCLIENT_EVENT_ONCONNECT 连接成功
1 SLCLIENT_EVENT_ONDISCONNECT 断开连接
2 SLCLIENT_EVENT_ONLOGIN 登录成功
3 SLCLIENT_EVENT_ONLOGINFAIL 登录失败
4 SLCLIENT_EVENT_ONCHANNELSFULL 连接通道已满
5 SLCLIENT_EVENT_ONCHECKCFAIL 检查通道数失败

12. 会话事件代码

代码(code) 定义 说明
1 eSLSessionEvent_OnConnected 连接成功
2 eSLSessionEvent_OnDisconnected 断开连接
3 eSLSessionEvent_OnDisplayChanged 分辨率改变
4 eSLSessionEvent_OnNewFiletrans 新文件传输
5 eSLSessionEvent_OnGetRemoteSysinfo 远程系统信息回调

13. 远程客户端系统信息

当主控端和被控端建立远程系统信息的连接后,主控端可以调用SLGetRemoteSysinfo函数来获取和修改被控端系统的一些基本信息,其中包括性能检测、事件查看、进程信息、服务、本地用户和组、共享资源和环境变量等信息。具体指令和响应数据结构如下表所示(获取信息返回xml数据结构,执行命令返回JSON数据结构):

系统信息 参数1(QueryString) 参数2(Content 响应数据 说明
性能监测 性能监测 __mode=permon Xml数据 CPU、内存、磁盘、网络等数据
事件查看 事件日志 __mode=event type=[应用程序|安全|系统] start=[开始索引]
limit=[结束索引]
Xml数据 参数1指定获取何种类型的日志;
参数2指定获取日志的索引范围;
进程 进程列表信息(CPU或内存) __mode=process
op=[cpu|memory]
act=list
Xml数据 获取带有CPU|内存信息的进程列表
终止某个进程 __mode=control
act=close
pid=[进程ID]
Json数据 关闭指定的进程,执行结果以JSON数据返回
关机或重启 __mode=control
act=shutdown|reboot
Json数据 关闭或重启远程计算机,执行结果以JSON数据返回
服务 服务列表信息 __mode=service
act=list
Xml数据 获取windows服务信息
停止、启动、暂停、恢复服务 __mode=service
act=status
type=[stop|start|pause|resume]
name=[服务名]
Json数据 停止、启动、暂停、恢复某个服务
更改服务启动类型 __mode=service
act=start
name=[服务名]
type=[auto|manual|forbid]
Json数据 更改某个服务启动类型
本地用户和组 本地用户列表和组列表 __mode=group
op=[user|group]
act=list
Xml数据 根据调整参数1中的op参数,可获取本地用户列表和组列表
增加和编辑本地用户 __mode=group
act=save
op=user
newadd=1
name=[用户名]
newname=[新用户名]
fullname=[用户全名]
password=[密码]
repassword=[重复密码]
description=[用户描述信息]
pwdlock=1
forbidden=1
pwdnoexpire=1
group=[用户隶属组]
Json数据 参数2具体信息说明:
newadd:代表新增本地用户,编辑用户不能指定此参数\<可缺省>;
newname:编辑用户时更改用户名称,新增用户无需指定\<可缺省>;
name、fullname、password、repassword、decription表示此用户的一些基本信息;
pwdlock:禁止更改密码\<可缺省>;
forbidden:禁用此用户\<可缺省>;
pwdnoexpire:密码永不过期\<可缺省>;
group:此用户隶属的组\<可缺省>
增加组 __mode=group
act=save
op=group
name=[组名]
description=[组描述信息]
Json数据 增加一个组
删除本地用户或组 __mode=group
act=delete
op=[user|group]
name=[用户名或组名]
Json数据 删除指定的组或指定的用户
共享资源 共享资源、会话或打开的文件列表信息 __mode=shares
op=shares|session|openfile
act=list
Xml数据 获取共享资源、会话或打开的文件列表信息
删除会话 __mode=shares
op=session
act=delete
computer=[计算机名]
name=[会话名]
Json数据 删除一个会话,其中参数2中的computer可缺省
删除打开的文件 __mode=shares
op=openfile
act=delete
name=[文件名] Json数据 删除打开的文件,参数2中的name表示的是文件唯一标识,其值为文件属性中的id
环境变量 环境变量列表信息 __mode=variables
act=list
Xml数据 获取远程计算机环境变量列表信息
添加环境变量 __mode=variables
act=add
name=[变量名]
flag=[sys|user]
value=[变量值]
Json数据 添加一个环境变量;参数2的flag表示系统变量或用户变量
编辑环境变量 __mode=variables
act=edit
op=[sys|user]
name=[变量名]
flag=[sys|user]
newname=[新变量名]
value=[变量值]
Json数据 编辑某个环境变量;参数1的op表示待修改的环境变量是系统变量或用户变量
删除环境变量 __mode=variables
act=delete
name=[变量名]
op=[sys|user]
Json数据 删除某个环境变量
注册表 注册表列表信息 __mode=regedit
op=[key|value]
act=list
hkey=[注册表根键]
subkey=[注册表路径]
Xml数据 获取远程计算机注册表的键和值的列表信息
添加注册表信息 __mode=regedit
op=[key|value]
act=add
hkey=[注册表根键]
subkey=[注册表路径]
name=[值的名称]
type=[值的类型]
value=[值的数据]
Json数据 添加一个注册表的键或值的信息,其中name、type和value变量只对值有效
删除注册表信息 __mode=regedit
op=[key|value]
act=delete
hkey=[注册表根键]
subkey=[注册表路径]
name=[值的名称]
Json数据 删除一个注册表的键或值的信息,其中name变量只对值有效
编辑注册表信息(只修改值信息) __mode=regedit
op=value
act=edit
hkey=[注册表根键]
subkey=[注册表路径]
name=[值名称]
newname=[新值名称]
newtype=[新值类型]
newvalue=[新值数据]
Json数据 编辑一个注册表的值的信息

注:参数之间用符号‘&’连接