# win.net 库模块帮助文档

<details>  <summary>说明</summary>  <p>
win.net 并封装了部分 Mpr.dll 提供的部份 WNet（ Windows networking ）前缀的 API 函数。

表示网络资源的 NETRESOURCE 结构体定义如下：

```aardio
namespace win.net{
	class NETRESOURCE{
		INT scope;
		INT type;
		INT displayType;
		INT usage;
		ustring localName;
		ustring remoteName;
		ustring comment;
		ustring provider;
	}		
}
```
注意 aardio 里去掉了字段名里的类型前缀，例如原来的 `dwDisplayType` 精简为了 `displayType`。

win.net 所有需要输入 NETRESOURCE 结构体的参数都支持指定部分字段名，或仅用字符串指定 remoteName。

例如：`var info,str = win.net.getInfo({remoteName="remoteName",scope=2})`  
或者：`var info,str = win.net.getInfo("remoteName")`  

添加映射网络驱动器（ WebDAV 服务端）示例：

```aardio 
import win.net;
var netres = win.net.addConnection(,"http://localhost:8081","username","password")
print(  netres[["localName"]] || win.net.lasterr() );
```

</p></details>

## win.net 成员列表 <a id="win.net" href="#win.net">&#x23;</a>

WNet（ Windows networking ）函数库，例如网络共享文件与打印机资源接口。  
s相关标准库: web.dav.server, web.dav.client, web.dav.sys

### win.net.addConnection <a id="win.net.addConnection" href="#win.net.addConnection">&#x23;</a>
添加网络资源连接。  
成功返回 NETRESOURCE 结构体，失败返回 null,错误信息,错误代码。

### win.net.addConnection(localName,remoteName,username,password,hwndOwner,flags) <a id="win.net.addConnection" href="#win.net.addConnection">&#x23;</a>
添加映射网络驱动器。  
- 参数 @localName 指定本地映射分区名（字符串值，示例：`Z:`）。  
如果 @localName 为空值（保持参数占位或传 null 值）则自动分配空闲分区号。  
- 参数 @remoteName 指定网络资源路径（字符串值）。  
@remoteName 指定 HTTP/HTTPS 协议的 WebDAV URL 时会自动转为 UNC 格式。  
- 参数 @username 指定用户名（字符串值）。  
- 参数 @password 指定密码（字符串值）。  
- 可选用参数 @hwndOwner 指定所有窗口句柄。  
- 可选用参数 @flags 指定选项。  
详细用法请参考 API 函数 WNetAddConnection3 相关文档。

### win.net.addConnection(netResource,username,password,hwndOwner,flags) <a id="win.net.addConnection" href="#win.net.addConnection">&#x23;</a>
添加网络资源连接。  
参数 @netResource 指定 NETRESOURCE 结构体或指定了部分结构体字段的表对象。  
参数 @username 指定用户名。  
参数 @password 指定密码  
可选用参数 @hwndOwner 指定所有窗口句柄。  
可选用参数 @flags 指定选项。  
@flags 为 `8/*_CONNECT_INTERACTIVE*/` 则允许输入并确认登录用户名与密码。  
其他用法请参考 API 函数 WNetAddConnection3 相关文档。

### win.net.cancelConnection <a id="win.net.cancelConnection" href="#win.net.cancelConnection">&#x23;</a>
断开网络连接资源（映射网络驱动器），成功返回 true。

### win.net.cancelConnection(netResource,flags,force) <a id="win.net.cancelConnection" href="#win.net.cancelConnection">&#x23;</a>
参数 @netResource 指定连接的网络资源名。  
可选用参数 @flags 指定选项。  
可选用参数 @force 指定如果连接上有打开的作业或文件是否断开，默认为 false 。  
详细用法请参考 API 函数 WNetCancelConnection2W 相关文档。

### win.net.cancelConnection(remoteName,flags,force) <a id="win.net.cancelConnection" href="#win.net.cancelConnection">&#x23;</a>
参数 @remoteName 指定连接的网络资源名。  
可选用参数 @flags 指定选项。  
可选用参数 @force 指定如果连接上有打开的作业或文件是否断开，默认为 false 。  
详细用法请参考 API 函数 WNetCancelConnection2W 相关文档。

### win.net.enumResource(callback,resType,scope,usage) <a id="win.net.enumResource" href="#win.net.enumResource">&#x23;</a>

```aardio
win.net.enumResource(  
	function(netResource,contrainer){  
		/*枚举网络资源，回调函数的返回 false （必须恒等于 false）则退出枚举。  
netResource 为包含当前网络资源信息的 NETRESOURCE 结构体。  
contrainer 为表示父容器的 NETRESOURCE 结构体，无父容器时 contrainer 为 null 。  
创建迭代器的 resType,scope,usage 参数请参考系统 API 函数 WNetOpenEnum 相关文档。  
注意在 aardio 中不指定 scope 则默认设为 2(_RESOURCE_GLOBALNET)*/  
	},1/*_RESOURCETYPE_DISK*/  
)
```

### win.net.getInfo(netResource) <a id="win.net.getInfo" href="#win.net.getInfo">&#x23;</a>
获取信息。  
参数 @1 可指定 NETRESOURCE 结构体或部分字段，也可仅传入指定 remoteName 的字符串。  
第一个返回值为新的 NETRESOURCE 结构体，  
第 2 个返回值为一个字符串，包含适用于特定系统函数的资源名称。

### win.net.getUser <a id="win.net.getUser" href="#win.net.getUser">&#x23;</a>
返回连接指定资源的用户名。

### win.net.getUser() <a id="win.net.getUser" href="#win.net.getUser">&#x23;</a>
不指定参数则返回运行当前进程的用户名。

### win.net.getUser(netResource) <a id="win.net.getUser" href="#win.net.getUser">&#x23;</a>
参数 @netResource 指定 NETRESOURCE 结构体。

### win.net.getUser(remoteName) <a id="win.net.getUser" href="#win.net.getUser">&#x23;</a>
参数 @remoteName 指定网络资源名称。  
不指定参数则返回运行当前进程的用户名。

### win.net.lasterr() <a id="win.net.lasterr" href="#win.net.lasterr">&#x23;</a>
返回 WNet 函数设置的错误信息与代码。  
仅返回网络提供商报告的错误而非系统错误。  
无错误则无返回值，否则返回：错误信息,网络提供程序名称,错误代码。

### win.net.urlToUnc(remoteName) <a id="win.net.urlToUnc" href="#win.net.urlToUnc">&#x23;</a>
参数 @remoteName 为 URL 时转换为 UNC 返回。  
其他参数直接返回（只能为字符串或 null 值）。

### 自动完成常量
_RESOURCEDISPLAYTYPE_DIRECTORY=9  
_RESOURCEDISPLAYTYPE_DOMAIN=1  
_RESOURCEDISPLAYTYPE_FILE=4  
_RESOURCEDISPLAYTYPE_GENERIC=0  
_RESOURCEDISPLAYTYPE_GROUP=5  
_RESOURCEDISPLAYTYPE_NDSCONTAINER=0xB  
_RESOURCEDISPLAYTYPE_NETWORK=6  
_RESOURCEDISPLAYTYPE_ROOT=7  
_RESOURCEDISPLAYTYPE_SERVER=2  
_RESOURCEDISPLAYTYPE_SHARE=3  
_RESOURCEDISPLAYTYPE_SHAREADMIN=8  
_RESOURCEDISPLAYTYPE_TREE=0xA  
_RESOURCETYPE_ANY=0  
_RESOURCETYPE_DISK=1  
_RESOURCETYPE_PRINT=2  
_RESOURCETYPE_UNKNOWN=0xFFFF  
_RESOURCEUSAGE_ALL=0  
_RESOURCEUSAGE_CONNECTABLE=1  
_RESOURCEUSAGE_CONTAINER=2  
_RESOURCEUSAGE_RESERVED=0x80000000  
_RESOURCE_CONNECTED=1  
_RESOURCE_ENUM_ALL=0xFFFF  
_RESOURCE_GLOBALNET=2  
_RESOURCE_PUBLICNET=2  
_RESOURCE_REMEMBERED=3  
