//web.view( WebView2 浏览器控件) - 调用 React hooks import sys.device; import win.ui; /*DSG{{*/ var winform = win.form(text="WebView2";right=966;bottom=622) winform.add( button={cls="button";text="列出系统 PCI 硬件设备";left=615;top=537;right=869;bottom=606;color=0xD77800;db=1;dr=1;font=LOGFONT(h=-14);note="在 aardio 中设置 React 组件数据";z=2}; static={cls="static";left=8;top=6;right=956;bottom=503;db=1;dl=1;dr=1;dt=1;z=1} ) /*}}*/ import web.view; var wb = web.view(winform.static); /* wb.export 导出 aardio 函数为 Javascript 全局对象( Promise 对象 ), JavaScript 调用这些 aardio 函数时将会使用 JSON 自动转换跨编程语言的参数和返回值。 这种经由 JSON 转换的对象与 JavaScript 完全兼容,例如下面返回的 result 可以直接作为 JavaScript 表格的数据源使用。 而通过 wb.external 导出的 aardio 函数则只能返回 COM 代理对象,返回的 aardio 对象不能作为 JavaScript 表格的数据源使用。 */ wb.export( getData = function(){ var result = table.array(); var devInfo = sys.device(,"PCI"); for( index,classGuid,deviceDesc in devInfo.each(8/*_SPDRP_CLASSGUID*/,0/*_SPDRP_DEVICEDESC*/) ){ table.push(result,{classGuid:classGuid,deviceDesc:deviceDesc}); } thread.delay(1000);//模拟耗时 loading return result; }; ) wb.html = /** WebView2
**/ //调用 JS 函数 wb.emit = lambda(...) wb.xcall("emitter.emit",...); // aardio 按钮事件 winform.button.oncommand = function(id,event){ winform.button.disabledText = {"✶";"✸";"✹";"✺";"✹";"✷"}; var result = table.array(); wb.emit("setData",result); wb.emit("setLoading",true); var devInfo = sys.device(,"PCI"); for( index,classGuid,deviceDesc in devInfo.each(8/*_SPDRP_CLASSGUID*/,0/*_SPDRP_DEVICEDESC*/) ){ table.push(result,{classGuid:classGuid,deviceDesc:deviceDesc}); } thread.delay(1000);//模拟耗时 loading wb.emit("setData",result); wb.emit("setLoading",false); winform.button.disabledText = null; } winform.show(); win.loopMessage();