#2
吹水佬2024-07-30 14:05
有一个C的示例,或者可以参考一下。
C与JavaScript互相调用 C++调用JavaScript 和wke一样,wkexe也可以通过相同的wkeRunJS函数调用JavaScript代码, 但不同的是,如果C++代码想要获得JavaScript的返回值,需要在调用的JS代码前加上return: jsRet = wkeRunJS(gWkeWebView, "return funcforcplusplus(\"\xe4\xbd\xa0\xe5\xa5\xbd ABCDEFG\")"); jsRetStr = jsToStringW(wkeGlobalExec(gWkeWebView), jsRet); MessageBox(hWnd, jsRetStr, L"runJS返回", 0); JavaScript调用C++ 同wke一样,JS调用C++代码也需要绑定,在RunApplication函数中CreateWebWindow之前添加如下代码: jsBindFunction("msgBox", js_msgBox, 2);//JS调用C++ 同时在app.cpp文件中添加: //JS调用C++ jsValue JS_CALL js_msgBox(jsExecState es) { const wchar_t* text = jsToStringW(es, jsArg(es, 0)); const wchar_t* title = jsToStringW(es, jsArg(es, 1)); MessageBox(NULL, text, title, 0); return jsStringW(es, L"C++返回字符串"); } 前端测试用的HTML代码如下: <!DOCTYPE html> <html xmlns="http://www. <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>WKE Test Web Page</title> <script> function funcforcplusplus(instr){ document.getElementById('result').value=instr; return navigator.userAgent; //return "JavaScript Return 返回啦"; } </script> </head> <body> <p>WKE Test Web Page</p> <a href='#' onclick="document.getElementById('result').value=msgBox('TEST Function from JS to Cpp','来自Javascript的调用');">LINK</a> <textarea rows='6' cols='36' id='result'>hello</textarea> </body> </html> |
MinibLink 如何接收 runJs运行后的返回值?
API文档地址:https://
帮助文档说:jsValue是个封装了内部v8各种类型的类。
我简单的写了3条语句,但结果不对,供参考:
lnResult = wkeRunJS(Thisform.SBG,jsString)
es = wkeGlobalExec(Thisform.SBG)
lctext = jsToTempString(es,lnResult)