# win.ts 库模块帮助文档

<details>  <summary>创建远程桌面客户端</summary>  <p>

import com.lite;
var rdpClient = com.lite("MsTscAx.dll").createEmbed(winform,"{7cacbd7b-0d99-468f-ac33-22e495c0afe5}")
var msTscAx = rdpClient._object;//获取控件对象 https://docs.microsoft.com/en-us/windows/win32/termserv/mstscax

完整范例： 
"~/example/COM/RegFree/com.lite.aardio"

</p></details>

## win.ts 成员列表 <a id="win.ts" href="#win.ts">&#x23;</a>

远程桌面（即 Windows Terminal Server ）接口,  
更多会话函数请参考标准库 service

### win.ts.session() <a id="win.ts.session" href="#win.ts.session">&#x23;</a>
[返回对象:wtsSessionObject](#wtsSessionObject)

### win.ts.session(sessionId,serverHandle) <a id="win.ts.session" href="#win.ts.session">&#x23;</a>
创建会话对象，所有参数可选

### win.ts.suppressWhenMinimized(mode) <a id="win.ts.suppressWhenMinimized" href="#win.ts.suppressWhenMinimized">&#x23;</a>
在客户端机器上设置远程桌面客户端最小化后是否保持桌面活动状态  
参数设为 0 为自动设置,1 为禁止活动状态,2 为保持活动状态

## win.ts.session 成员列表 <a id="win.ts.session" href="#win.ts.session">&#x23;</a>

### win.ts.session.activeConsoleId() <a id="win.ts.session.activeConsoleId" href="#win.ts.session.activeConsoleId">&#x23;</a>
获取本地活动桌面（本机控制台）会话 ID

### win.ts.session.connect <a id="win.ts.session.connect" href="#win.ts.session.connect">&#x23;</a>
连接并切换会话,此函数需要管理权限,  
这个函数可用于源登录会话重新连接到其他会话拥有的激活的控制桌面,  
例如将当前远程桌面会话重新连接到本机控制桌面,  
以避免远程桌面关闭而退出会话  

此函数需要调用 tscon.exe,但家庭版缺少 tscon.exe,  
建议改用不依赖 tscon.exe 的 win.ts.session().connect() 函数

### win.ts.session.connect(logonId,targetName,logonPassword) <a id="win.ts.session.connect" href="#win.ts.session.connect">&#x23;</a>
所有参数都是可选参数,  
@logonId 指定源会话ID，@logonId 默认为当前会话,  
@logonId指定源会话的登录用户必须拥有连接目标会话的权限,  
连接到 @targetName 指定目标会话名的桌面,@targetName 默认为本机控制台（本地桌面）会话,  
@logonPassword 指定 @logonId 参数指定会话的密码,  
返回值1为标准输出,返回值2为错误输出,返回值3为退出代码  

如果切换远程桌面与本地桌面会话,  
@targetId 指定的控制会话桌面将被@logonId 指定的会话接管,  
@targetId指定的会话断开,  

如果用于切换本地登录用户,  
@targetId指定的控制会话桌面断开,@logonId 指定的会话将被激活

### win.ts.session.currentId() <a id="win.ts.session.currentId" href="#win.ts.session.currentId">&#x23;</a>
获取当前会话 ID

### win.ts.session.enum <a id="win.ts.session.enum" href="#win.ts.session.enum">&#x23;</a>

```aardio
win.ts.session.enum(  
	function(sessionId,stationName,connectState){  
		console.log(sessionId,stationName,connectState,win.ts.session(sessionId).userName())/*sessionId 会话ID  
stationName 会话名称，本机控制会话名为"console",  
connectState 连接状态  
回调函数返回任何非 null 值可终止枚举,  
并且回调函数的返回值将传回为枚举函数的返回值*/  
	}  
)
```

### win.ts.session.isRemote() <a id="win.ts.session.isRemote" href="#win.ts.session.isRemote">&#x23;</a>
当前是否通过远程桌面登录

## wtsSessionObject 成员列表 <a id="wtsSessionObject" href="#wtsSessionObject">&#x23;</a>

### wtsSessionObject.clientDirectory() <a id="wtsSessionObject.clientDirectory" href="#wtsSessionObject.clientDirectory">&#x23;</a>
客户端目录

### wtsSessionObject.clientName() <a id="wtsSessionObject.clientName" href="#wtsSessionObject.clientName">&#x23;</a>
客户端名

### wtsSessionObject.connect <a id="wtsSessionObject.connect" href="#wtsSessionObject.connect">&#x23;</a>
连接并切换会话,此函数需要管理权限,  
这个函数可用于源登录会话重新连接到其他会话拥有的激活的控制桌面,  
例如将当前远程桌面会话重新连接到本机控制桌面,  
以避免远程桌面关闭而退出会话

### wtsSessionObject.connect(targetId,logonPassword,wait) <a id="wtsSessionObject.connect" href="#wtsSessionObject.connect">&#x23;</a>
当前源会话登录用户必须拥有连接到目标会话的权限,  
连接到 @targetId 指定目标会话ID,@targetId默认为本机控制台（本地桌面）会话,  
可选参数  @logonPassword 指定当前源会话的登录密码,注意不是目标会话的密码,  
可选参数 @wait 指定是否等待操作完成,  
函数执行成功返回true,失败返回false  

如果切换远程桌面与本地桌面会话,  
@targetId指定的控制会话桌面将被源会话接管,@targetId指定的会话断开,  

如果用于切换本地登录用户,  
@targetId指定的控制会话桌面断开,源会话将被激活

### wtsSessionObject.connectState() <a id="wtsSessionObject.connectState" href="#wtsSessionObject.connectState">&#x23;</a>
连接状态

### wtsSessionObject.disconnect(wait) <a id="wtsSessionObject.disconnect" href="#wtsSessionObject.disconnect">&#x23;</a>
断开会话连接，但不关闭会话,   
后续可重新连接到该会话

### wtsSessionObject.domainName() <a id="wtsSessionObject.domainName" href="#wtsSessionObject.domainName">&#x23;</a>
域名

### wtsSessionObject.id() <a id="wtsSessionObject.id" href="#wtsSessionObject.id">&#x23;</a>
会话ID

### wtsSessionObject.isRemote() <a id="wtsSessionObject.isRemote" href="#wtsSessionObject.isRemote">&#x23;</a>
是否通过远程桌面登录

### wtsSessionObject.queryInfo(infoClass,info) <a id="wtsSessionObject.queryInfo" href="#wtsSessionObject.queryInfo">&#x23;</a>
查询信息，用法参考源码

### wtsSessionObject.stationName() <a id="wtsSessionObject.stationName" href="#wtsSessionObject.stationName">&#x23;</a>
会话名

### wtsSessionObject.userName() <a id="wtsSessionObject.userName" href="#wtsSessionObject.userName">&#x23;</a>
用户名
