那么C++在WINDOWS下运行可以装入WEB控件实现脚本调用。
下面是一段引用某位博主的代码可以参考一下。
// vcJscript.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#import "C:/windows/system32/msscript.ocx" // msscript.ocx
using namespace MSScriptControl
#include <fstream>
#include <string>
using namespace std
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr = CoInitialize(NULL) //使用一个变量初始化COM设置,单线程运行
IScriptControlPtr pScriptControl(__uuidof(ScriptControl))//初始化脚本控件
pScriptControl->Language = "JavaScript"//设置语言
pScriptControl->AllowUI = TRUE//设置显示
fstream file//文件流用于读出JS代码
file.open( "test.js" )
string strFileContent, strTemp
char szTemp[1024]=""
do
{
file.read(szTemp, 1024)
strFileContent.append( szTemp )//拼接JS文件
memset( szTemp, 0, 1024 )
}
while ( !file.fail() )
file.close()
pScriptControl->AddCode(strFileContent.c_str())//向控件加入代码
VARIANT A = pScriptControl->Eval("main(4)")//获取返回值
int iRet = A.intVal
return 0
}
<font size=5 color='#333333'>以下主要讲WKWebView中OC与JS交互,UIWebView这里稍微简单介绍 </font><font size=3>这里重点关于wkwebview中JS调用OC<font color='#20B2AA'>返回值的问题</font>,普通的OC与JS交互网上资料一大堆</font>
<font size=4 color='#666666'>稍微简单介绍下:</font>
<font size=3 color='#666666'>下面是<font color=red>错误</font>调用:</font>
<font size=3 color='#999999'>JavaScript 在浏览器环境中发出URL请求, Objective-C 截获请求以获取相关请求的思路. 在Objective-C 中在实现UIWebViewDelegate 时截获请求:</font>
<font size=3>以上前三种方式<font size=5 color=red>缺点</font></font>
window.webkit.messageHandlers.<方法名>.postMessage(<数据>)、URL请求截获、监听Cookie的三种方式,整个过程是异步,不能同步
在JavaScript中不能直接获取Objective-C处理的返回值,需要Objective-C 调用JavaScript层自己实现的api才能得到返回值
使用callback 比较麻烦,需要在JavaScript 上自己实现
包含api的.h文件,然后直接调用就可以了,比如winsock.h,可以调用recv等函数,也可以在函数前面加::答案补充
HWND hWnd = ::FindWindow(sClassName, sWindowName)//传入类明到sClassName,窗口名sWindowName,否则传入NULL