aardio 文档
aardio 范例: 通过 .NET 调用 WinRT / UWP 接口
调用 UWP / WinRT 接口
//aardio 通过 .NET 调用 WinRT / UWP 接口
//标准库 dotNet.ocr, 扩展库 dotNet.toastListener 都运用了以下方法编译 DLL 。
//调用 UWP / WinRT 接口 https://www.aardio.com/zh-cn/doc/library-guide/std/dotNet/_.html#uwp
import console.int;
import dotNet.uwpCompiler;
/*
创建启用 WinRT / UWP 接口的 .NET 编译器,
请先安装 Windows 10 SDK,或用参数 @2 指定 WinRT 元数据文件 Windows.winmd 的路径。
调用编译后的 DLL 不需要 Windows.winmd ,仅编译时需要。
*/
var uwpCompiler = dotNet.uwpCompiler("/aardio.WindowsRuntime.dll")
uwpCompiler.Parameters.CompilerOptions = "/optimize"
//C# 源代码
uwpCompiler.Source = /******
using System;
using System.Threading.Tasks;
namespace aardio.WindowsRuntime{
public class API {
//异步函数
public async Task<bool> LaunchUriAsync(string uri) {
return await Windows.System.Launcher.LaunchUriAsync(
new Uri(uri)
);
}
//同步函数
public bool LaunchUri(string uri){
return LaunchUriAsync(uri).GetAwaiter().GetResult();
}
}
}
******/
//编译 DLL
var ret = uwpCompiler.Compile();
if(!ret){
console.log("编译错误:",uwpCompiler.getLastError() );
return;
}
//加载编译后的程序集
var assembly = dotNet.load("/aardio.WindowsRuntime.dll");
//导入名字空间
assembly.import("aardio.WindowsRuntime");
//创建 .NET 对象
var uwp = aardio.WindowsRuntime.API();
//调用同步方法
uwp.LaunchUri("ms-screenclip:");
//调用异步方法
//var task = uwp.LaunchUriAsync("ms-screenclip:")
//同步等待任务完成,不会阻塞界面
//var result = dotNet.wait(task);
Markdown 格式