//COM 接口 - 事件输出参数 import win.ui; /*DSG{{*/ var winform = win.form(text="用连接点注册事件";right=964;bottom=605) winform.add( edit={cls="edit";left=22;top=524;right=937;bottom=584;db=1;dl=1;dr=1;edge=1;multiline=1;vscroll=1;z=2}; static={cls="static";left=22;top=17;right=938;bottom=510;db=1;dl=1;dr=1;dt=1;edge=1;z=1} ) /*}}*/ //嵌入 COM 控件 var browser = winform.static.createEmbedEx("Shell.Explorer.2"); //定义事件表 browser.BeforeNavigate2 = function( pDisp, url, flags, targetFrame, postData, headers, cancel ) { winform.edit.print("BeforeNavigate2",url); /* aardio 基于纯函数原则,不会直接通过修改参数输出值, 如果是引用或输出参数,可在返回值里返回新的参数值。 首先是返回函数本身的返回值(没有就不用返回), 然后依传入的前后顺序返回所有输出参数的值, 可以省略返回值,但不能改变返回值的位置。 例如这个事件,cancel 参数返回 true 就可以阻止打开 url 参数指定的网址, 但 cancel 必须是第 6 个返回值。 */ return url, flags, targetFrame, postData, headers, cancel; //阻止网页打开 //return url, flags, targetFrame, postData, headers, true; }; //调用 COM 对象打开网页 browser.Navigate("about:hello"); winform.show(3/*_SW_MAXIMIZE*/); win.loopMessage();