如何实现从 Windows 脚本主机到脚本的事件调度
How to implement event dispatching from a Windows Script host to a script
我有一个使用 Visual C++ 2019 构建的 C++ COM(多线程公寓模型(应用程序。我正在使用基于 COM 的活动脚本接口和类。我有一个JavaScript("JScript",CLSID{F414C260-6AC0-11CF-B6D1-00AA00BBBB58}
(活动脚本COM对象创建和设置。一切都出奇地好(不幸的是,对于默默无闻的东西(。
是否有一种惯用的方法来注册和调用事件侦听器,其中脚本可以使用类似 https://dom.spec.whatwg.org/#dom-eventtarget-addeventlistener 的 API,并且我可以从脚本主机调度事件 (C++(?澄清一下,我能够很好地从脚本调用IDispatch
接口方法,我想从程序调用之前使用这些方法传递给程序的脚本函数。GetScriptDispatch
是另一回事 - 它允许我调用全局脚本命名空间中可用的方法,但我需要调用传递给代理(从脚本("addEventListener"方法的函数。
我依赖此功能,因为我想调度事件。基本上,我希望addEventListener
在某些代理(例如,使用AddNamedItem
添加到脚本命名空间的对象(对象上可用,并且当C++应用程序中的某些事件发生时,我需要调用通过调用该方法添加的事件侦听器。
我已经读过一些关于IConnectionPoint
的内容,活动脚本文档简要提到了几次"事件接收器",但没有关于如何以及用于什么的示例。还有IBindEventHandler
界面,没有太多关于使用它的解释。
我知道这是古老的东西,但我喜欢COM和Active Script接口有几个实现,这对我来说增加了实用性。
您需要创建一个实现事件的对象(请参阅IConnectionPoint
(。
启动脚本后,可以调用AddNamedItem
。脚本现在知道对象的接口。如果实现,它可以在状态更改为SCRIPTSTATE_CONNECTED
时注册到此事件。
如果触发了事件,脚本将接收该事件并执行相应的代码部分。
有旧样本:
- Q168214示例:MFCAXS(您可能会在回溯引擎中找到它(
- 代码项目中有一个示例
- 有关事件的 ATL 示例,请看这里
- 如何通过cpp程序运行shell脚本
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在程序中编写脚本来编写和编译代码
- 如何在c++中使用system()来运行包含空格的python脚本
- 在cygwin中运行c++脚本时发生错误
- 如何将真正的字符串从python c-api转换为python脚本
- 用于将C++代码转换为 Web 程序集的脚本未终止
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 在原子中使用犰狳与脚本
- 如何停止 CLR 主机?
- 如何强制 Thrift 仅接受来自本地主机的连接
- 我适合在我的构建系统中使用 shell 脚本而不是AX_CHECK_COMPILE_FLAG吗?
- CANoe - 无法在 CAPL 脚本中打开.dll
- 在从Qt调用的Python脚本中导入OpenCV崩溃
- 如何实现从 Windows 脚本主机到脚本的事件调度
- Windows 脚本主机在关闭创建的窗口时终止
- Windows 脚本主机 - 错误 '800A01B6' 对象不支持此属性或方法
- 在主机上设置.htaccess以执行C++cgi脚本
- 我可以在服务中有一个COM接口从Windows脚本主机调用