MSXML2.XMLHTTP中的事件

狂风

有谁知道MSXML2.XMLHTTP如何实现其事件(如onreadystatechange)?
由于我需要使用C#构造一个COM组件,该组件将引发事件,但是使用vbscript调用此COM对象的客户端不支持WScript.CreateObject,因此无法处理COM事件。
但是我发现可以在客户端中按如下方式处理MSXML2.XMLHTTP的事件:

Function Hello()
If(objHttp.readyState=4) Then
MsgBox objHttp.responseText
End If
End Function
Set objHttp = CreateObject("MSXML2.XMLHTTP")
Set xmlDoc = CreateObject("MSXML.DOMDocument")
strWebserviceURL="http://localhost:8083/WebService.asmx/HelloWorld"
objHttp.onreadystatechange=getRef("Hello")
objHttp.Open "POST", strWebserviceURL
objHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHttp.send()

我从这里了解到,MSXML2.XMLHTTP事件未实现为COM自动化事件。
因此,我想知道MSXML2.XMLHTTP如何实现其事件,任何人都可以给出提示,任何帮助将不胜感激。

欧洲米切利

“ onreadystatechange”不是COM自动化事件,因为COM自动化事件要求调用者(主要以脚本语言编写)实现特定的COM接口,而脚本语言通常无法执行这些操作(查找COM连接点以获取完整的详细信息)。

如果您从提供的链接开始,并添加可通过“ OLE View”实用程序(也称为“ OLE-COM对象查看器”)收集的有关MSXML的信息,那么您将拥有找出它所需的一切。

使用Ole View并导航到MSXML类型库(“ \ Type Libraries \ Microsoft XML,v6.0(版本6.0)”)。打开该窗口,这将打开一个单独的窗口,其中详细显示了类型库。

从类型库查看器中,打开“ CoClasses”并查找XMLHTTP60(这是MSDN帖子中使用的确切类名)。您将验证它是否实现了该IXMLHTTPRequest接口。

现在,打开Interfaces节点并找到IXMLHTTPRequest这将产生以下代码(它是根据存储在类型库中的元数据生成的IDL):

...
[
  odl,
  uuid(ED8C108D-4349-11D2-91A4-00C04F7969E8),
  helpstring("IXMLHTTPRequest Interface"),
  dual,
  oleautomation
]
interface IXMLHTTPRequest : IDispatch {
    ...
    [id(0x0000000e), propput, helpstring("Register a complete event handler")]
    HRESULT onreadystatechange([in] IDispatch* rhs);
};

那告诉你一切如何运作。您将需要在代码中添加一个以IDispatch引用作为参数的方法。保存参考。您的对象的合同将说,提供的对象必须具有一个名为“ OnWhateverMyEventNameIs”的方法,并可能指定该方法必须采用的参数列表。

当需要通知事件时,您的代码将采用先前提供的引用,查找具有该名称的方法,并在找到后执行该方法。

由于您正在使用C#,因此您的setter方法或属性必须[COMVisible](很明显)必须是Object引用。对于事件触发实现,最简单的事情可能是使用该dynamic语言支持来仅调用该方法(在try / catch内,以防该方法不存在或无效)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Symfony2中的事件记录

来自分类Dev

VBA中的InternetExplorer与MSHTML2.XMLHTTP60

来自分类Dev

VBA MSXML2开放成员POST

来自分类Dev

在Excel VBA中使用MSXML2.XMLHTTP从网站中提取大量文本数据

来自分类Dev

vbscript msxml12.XMLHTTP错误处理

来自分类Dev

使用MSXML2.XMLHTTP进行GitHub API身份验证

来自分类Dev

使用Microsoft Xml Parser MSXML2,如何使用XPath检索属性的值?

来自分类Dev

VBA,MSXML2.XMLHTTP60头部解析

来自分类Dev

Yii2中事件的真实示例

来自分类Dev

angular2中的(change)事件挂钩

来自分类Dev

在onChange事件中调用2个函数

来自分类Dev

使用MSXML2.XMLHTTP代替InternetExplorer.Application和VBA登录网站

来自分类Dev

什么是Angular 2中的`change`事件

来自分类Dev

MSXML2.DOMDocument60-使用命名空间在VBA中读取XML

来自分类Dev

无对话框的ClearMyTracksByProcess | WinHttp.WinHttpRequest.5.1 | MSXML2.XMLHTTP

来自分类Dev

在XMLHTTP响应中识别NextSibling

来自分类Dev

VBA中的InternetExplorer与MSHTML2.XMLHTTP60

来自分类Dev

VBA MSXML2开放成员POST

来自分类Dev

在Excel VBA中使用MSXML2.XMLHTTP从网站中提取大量文本数据

来自分类Dev

如何从vbscript中的html页面提取值-我尝试了MSXML2.DOMDocument

来自分类Dev

使用Microsoft Xml Parser MSXML2,如何使用XPath检索属性的值?

来自分类Dev

陷阱对象要求:MSXML2.ServerXMLHTTP.6.0中的“ [object]”

来自分类Dev

什么是Angular 2中的`change`事件

来自分类Dev

Magento 2中的模态特征拦截事件

来自分类Dev

在 Angular 2 中监听事件

来自分类Dev

在 Angular 2 中动态构建点击事件

来自分类Dev

使用 VBA 和 MSXML2.XMLHTTP 库进行网页抓取

来自分类Dev

如何使用 MSXML2.XMLHTTP 和 VBA 进行身份验证?

来自分类Dev

使用 MSXML2.XMLHTTP 从网页中提取 JSON 值

Related 相关文章

  1. 1

    Symfony2中的事件记录

  2. 2

    VBA中的InternetExplorer与MSHTML2.XMLHTTP60

  3. 3

    VBA MSXML2开放成员POST

  4. 4

    在Excel VBA中使用MSXML2.XMLHTTP从网站中提取大量文本数据

  5. 5

    vbscript msxml12.XMLHTTP错误处理

  6. 6

    使用MSXML2.XMLHTTP进行GitHub API身份验证

  7. 7

    使用Microsoft Xml Parser MSXML2,如何使用XPath检索属性的值?

  8. 8

    VBA,MSXML2.XMLHTTP60头部解析

  9. 9

    Yii2中事件的真实示例

  10. 10

    angular2中的(change)事件挂钩

  11. 11

    在onChange事件中调用2个函数

  12. 12

    使用MSXML2.XMLHTTP代替InternetExplorer.Application和VBA登录网站

  13. 13

    什么是Angular 2中的`change`事件

  14. 14

    MSXML2.DOMDocument60-使用命名空间在VBA中读取XML

  15. 15

    无对话框的ClearMyTracksByProcess | WinHttp.WinHttpRequest.5.1 | MSXML2.XMLHTTP

  16. 16

    在XMLHTTP响应中识别NextSibling

  17. 17

    VBA中的InternetExplorer与MSHTML2.XMLHTTP60

  18. 18

    VBA MSXML2开放成员POST

  19. 19

    在Excel VBA中使用MSXML2.XMLHTTP从网站中提取大量文本数据

  20. 20

    如何从vbscript中的html页面提取值-我尝试了MSXML2.DOMDocument

  21. 21

    使用Microsoft Xml Parser MSXML2,如何使用XPath检索属性的值?

  22. 22

    陷阱对象要求:MSXML2.ServerXMLHTTP.6.0中的“ [object]”

  23. 23

    什么是Angular 2中的`change`事件

  24. 24

    Magento 2中的模态特征拦截事件

  25. 25

    在 Angular 2 中监听事件

  26. 26

    在 Angular 2 中动态构建点击事件

  27. 27

    使用 VBA 和 MSXML2.XMLHTTP 库进行网页抓取

  28. 28

    如何使用 MSXML2.XMLHTTP 和 VBA 进行身份验证?

  29. 29

    使用 MSXML2.XMLHTTP 从网页中提取 JSON 值

热门标签

归档