aardio 文档

electron.app 库模块帮助文档

electron 成员列表

Electron 扩展库

自动下载 Electron 的功能仅供测试不保证下载地址不会失效,
软件请自带 Electron,适用版本请参考 electron.runtime。
因 Electron 升级接口改动太大,暂无计划支持 Electron 后续版本。

建议改用基于 WebView2 的标准库: web.view
WebView2 为公用的系统组件,接口简洁、分发方便、功能强大,
并可自动更新,拥有良好的向下兼容性

electron.app

创建 Electron 嵌入进程,
注意主进程的控制台输出需要在 aardio 中调用 console.open 打开控制台才能查看,并且必须开启控制台的 UTF-8 模式,
可选在参数 @4中指定 true,以通知aardio在开发环境下自动打开控制台

electron.app()

返回对象:ElectronAppObject

electron.app(ctrl,electronPath,showConsole)

创建 Electron 嵌入进程,所有参数可选
参数@1 可选用控件对象指定宿主窗口。
参数 @electronPath 指定electron.exe的路径,
不指定则自动下载安装 Electron 运行时

electron.app(title)

创建electron嵌入进程,所有参数可选
参数@1指定窗口标题

electron.lastRemoteDebuggingPort

electron最近启用的远程调试端口

ElectronAppObject 成员列表

ElectronAppObject._form

创建chrome.app时指定的父窗口

返回对象:staticObject

ElectronAppObject.accessControlAllowOrigin

允许写入 Access-Control-Allow-Headers 响应头的站点地址。
此属性必须为 null、字符串,或者指定为一个表对象,
表的键为允许跨域调用的站点地址,值必须为 true
站点地址应使用 https://host 格式,且结尾不要有斜杠,
新的浏览器已经禁止在非 HTTPS 协议下调用本机地址,
而老版浏览器则反之

ElectronAppObject.accessControlRequestPrivateNetwork

自定义 Access-Control-Request-Private-Network 响应头的值,
默认为 "true",可改为 null

ElectronAppObject.appPath

electron主进程所在目录,可指定为asar文件路径,
该值不指定时默认为"/electron.app",
该目录为默认值"/electron.app"时,发布EXE时可自动打包为asar - 可选嵌入EXE文件

ElectronAppObject.callback(method,proc)

ElectronAppObject.callback("/*调用survey发起调查指定的方法名字*/",function(hSocket,result,err){  

})

ElectronAppObject.chromePath

electron.exe 路径

ElectronAppObject.chromeProcessId

electron进程ID

ElectronAppObject.chromeThreadId

electron启动线程ID

ElectronAppObject.close()

关闭主窗口

ElectronAppObject.doScript($,js,...)

在electron中执行javascript代码,忽略返回,
在js参数后可选指定多个字符串格式化参数用于调用string.form格式化代码,

参数@1指定客户端套接字句柄,
RPC服务端远程回调函数名首字符为$时,
第一个回调$参数即为当前客户端套接字句柄,
除非熟悉getActiveSocket函数导致的潜在问题,请不要省略$参数

ElectronAppObject.doScriptMain(js,...)

在electron主进程中执行javascript代码,忽略返回值,
在js参数后可选指定多个字符串格式化参数用于调用string.form格式化代码

ElectronAppObject.electronDir

electron.exe 所在的目录

ElectronAppObject.electronPath

electron.exe 路径

ElectronAppObject.external

ElectronAppObject.external = {
    /*可以在这里指定允许electron访问的对象和函数  
在electron使用const aardio = require('aardio')导入此对象  
必须在调用start函数以前设置此对象才能生效  
注意electron.app已经默认提供了部分导出函数  
例如发送标题栏命令必须使用预定义的hitCaption等函数*/
}

ElectronAppObject.fullpath()

在参数中指定electron.exe 所在目录下的相对路径,
此函数转换为完整路径

ElectronAppObject.getActiveSocket()

获取RPC服务端当前活动套接字句柄
,任何触发消息处理、异步套接字处理程序的代码都有可能改变这个函数的返回值
任何时候都不推荐使用此函数

更好的替代方案是在RPC函数名前添加$字符,用于通知aardio在回调参数中添加$参数
回调$参数可以稳定可靠的获取当前套接字

ElectronAppObject.getUrl("/res/")

将资源文件路径转换为HTTP服务端网址

ElectronAppObject.html

可选使用些属性直接指定启动页面的代码
代码会被自动存于indexUrl指定的文件地址

ElectronAppObject.http

aardio创建的HTTP服务器

返回对象:asynHttpServerObject

ElectronAppObject.httpHandler

ElectronAppObject.httpHandler["/test.js" ] = function(response,request){
    /*自定义HTTP处理程序  
键为请求的路径,值为处理函数或者HTML代码*/
}

ElectronAppObject.hwndChrome

electron窗口句柄

ElectronAppObject.indexReady

ElectronAppObject.indexReady(  
    function($){  
        /*如果加载startEnviron.indexUrl已完成,  
并且页面上的DOM内容、aardio模块都已准备就绪,  
将立即执行在此注册的回调函数,  
可重复添加回调,并保证按添加的前后顺序调用且仅调用一次  
参数 $ 为触发此事件的网页RPC客户端套接字句柄*/  
    }   
)

ElectronAppObject.jsMain

ElectronAppObject.jsMain = /**  
    const aardio = require('aardio');   
    const app = require('electron').app;   

    /* aardio-electron 主进程已准备就绪,win是已创建的主窗口(BrowserWindow对象) */  
    aardio.ready( win => {   
        if( !aardio.studioInvoke ){  
            win.setMenu( null )   
        }   

        win.on('closed', () => {    

        })        
    } )  

    /* 全部窗口已关闭, 退出electron进程 */  
    app.on('window-all-closed', () => {  
        app.quit();   
    })   
**/

ElectronAppObject.msgbox("字符串参数")

弹出对话框
参数@1指定显示的数据,如果是表对象先序列化为文本,
其他对象调用tostring转换为文本

此函数调用win.msgbox,但设定父窗口为当前chrome窗体

ElectronAppObject.msgbox("字符串参数","标题")

弹出对话框
参数@1指定显示的数据,如果是表对象先序列化为文本,
其他对象调用tostring转换为文本

此函数调用win.msgbox,但设定父窗口为当前chrome窗体

ElectronAppObject.msgboxErr("字符串参数")

弹出错误对话框
参数@1指定显示的数据,如果是表对象先序列化为文本,
其他对象调用tostring转换为文本

此函数调用win.msgbox,但设定父窗口为当前chrome窗体

ElectronAppObject.msgboxErr("字符串参数","标题")

弹出错误对话框
参数@1指定显示的数据,如果是表对象先序列化为文本,
其他对象调用tostring转换为文本

此函数调用win.msgbox,但设定父窗口为当前chrome窗体

ElectronAppObject.msgboxTest("字符串参数")

弹出询问对话框
参数@1指定显示的数据,如果是表对象先序列化为文本,
其他对象调用tostring转换为文本

此函数调用win.msgbox,但设定父窗口为当前chrome窗体

ElectronAppObject.name

应用程序名,只能使用英文字母、连字符、下划线
在调用start函数之前指定才会生效

ElectronAppObject.nodePath

调用start函数时会将此目录添加到NodeJs搜索模块路径,
此目录不用指定保持默认值即可,aardio会自动在此目录下添加ws.asar

ElectronAppObject.notify($,"method",...)

调用指定electron函数,但不需要客户端回调反馈,

参数@1指定客户端套接字句柄,
RPC服务端远程回调函数名首字符为$时,
第一个回调$参数即为当前客户端套接字句柄,
除非熟悉getActiveSocket函数导致的潜在问题,请不要省略$参数

ElectronAppObject.notifyMain("main.method",...)

调用electron主进程的函数,但不需要客户端回调反馈,
建议名字加上"main."前缀

ElectronAppObject.onClose

ElectronAppObject.onClose = function(hSocket,err){
    /*一个渲染进程断开连接触发此事件*/
}

ElectronAppObject.onError

ElectronAppObject.onError = function(hSocket,err){
    errput(err,"electron/rpc error");/*自定义RPC错误处理*/
}

ElectronAppObject.onIndexLoad

ElectronAppObject.onIndexLoad = function(){
    /*主窗口首次加载startEnviron.indexUrl指定的首页后触发此事件*/
}

ElectronAppObject.onIndexReady

ElectronAppObject.onIndexReady = function(){
    /*主窗口首次加载完成startEnviron.indexUrl指定的首页,  
并且页面上的DOM内容、aardio模块都已准备就绪*/
}

ElectronAppObject.onQuit

ElectronAppObject.onQuit = function(){
    ..win.quitMessage();/*Electron主进程断开连接触发此事件*/
}

ElectronAppObject.onReady()

ElectronAppObject.onReady = function(){
    /*electron已创建主窗口  
node.js主进程内aardio/electron交互接口已准备就绪*/
}

ElectronAppObject.onUrlReady

ElectronAppObject.onUrlReady = function(hSocket,url){
    /*页面加载完成并且页面上的DOM内容、aardio模块都已准备就绪*/
}

ElectronAppObject.process

electron进程对象

返回对象:processObject

ElectronAppObject.publish(method,...)

主动向所有客户端发送通知
method指定客户端方法名,
可添加任意个调用参数

ElectronAppObject.ready

ElectronAppObject.ready(  
    function(hwndChrome){  
        /*保证在electron主窗口准备就绪后立即执行此回调函数  
可重复添加此回调,并保证按添加的前后顺序调用*/  
    }   
)

ElectronAppObject.remoteDebuggingPort

指定远程调试端口
如果指定为0,则自动分配1025以后的空闲端口
此属性启动后更新为实际开始的调试端口号

注意开启远程调试端口以后,
不应再在electron中调用win.webContents.openDevTools启动调试工具
这2个会冲突导致一些不正常

ElectronAppObject.rpc

aardio创建的JSON-RPC服务端

返回对象:websocketjsonserverObject

ElectronAppObject.serverIp

指定嵌入服务器的监听IP
默认值为 "127.0.0.1",仅限本机可以访问
如果希望外网可以访问,可以赋值为null即可
在调用start函数以前指定此属性才有效

ElectronAppObject.serverPort

指定嵌入服务器的监听端口
建议保持默认值null
不指定端口可以随机分配空闲端口,不会出现端口冲突的问题
在调用start函数以前指定此属性才有效

ElectronAppObject.show()

显示或隐藏主窗口,
参数可以省略,也可指定为false,true用于控制显示状态,
也可以使用_SW_前缀的常量等

ElectronAppObject.start()

启动electron主进程,
省略参数自动指定默认值,indexUrl默认指定为"./index.html"
indexUrl参数的首字符为"."表示electron主进程目录下的相对路径

ElectronAppObject.start(indexUrl)

ElectronAppObject.start("/*可选直接在这里指定一个启动网址启动electron*/")

ElectronAppObject.start(startEnviron)

ElectronAppObject.start({  

    /*指定首页地址,必须指定*/  
    indexUrl = "/res/index.aardio";  

    /*创建窗口参数,可以不指定*/  
    browserWindow = {  
        width = 800;  
        height = 600;  
    };  

    /*启动参数,可以不指定*/  
    args = {  

    };  
})

ElectronAppObject.startLoopMessage(startEnviron)

调用start函数启动electron主进程,
然后调用 win.loopMessage 函数并返回该函数的返回值,
参数用法请参考start函数

ElectronAppObject.survey(method,...)

发起调查任务,
调用所有客户端的同名函数,
method指定客户端方法名,
可添加任意个调用参数

请使用callback函数指定调查结束后客户端回调的函数

ElectronAppObject.windowTitle

窗口默认标题

ElectronAppObject.ws

aardio创建的WebSocket服务器

返回对象:websocketserverObject

ElectronAppObject.xcall($,"method",...)

调用electron函数,
参数@1指定客户端套接字句柄,
RPC服务端远程回调函数名首字符为$时,第一个回调$参数即为当前客户端套接字句柄,
除非熟悉getActiveSocket函数导致的潜在问题,请不要省略$参数

在electron的js代码使用 aardio.on("method")
添加允许aardio调用的js回调函数.

可选使用callback函数指定一个同名回调函数按收本次调用electron的返回值

ElectronAppObject.xcallMain("main.method",...)

调用electron主进程的函数,建议名字加上"main."前缀,
在electron主进程中js代码使用 aardio.on("main.method")
添加允许aardio调用的js回调函数.

可选使用callback函数指定一个同名回调函数按收本次调用electron的返回值

ElectronAppObject.startEnviron 成员列表

调用start函数时指定的启动参数
在调用start启动electron以后再修改此参数对electron是不起作用的

ElectronAppObject.startEnviron.indexUrl

electron打开的首页地址

ElectronAppObject.startEnviron.rpcServerUrl

WebSocket/RPC服务器地址

Markdown 格式