Vbscript 为WinHTTPRequest指定事件处理程序前缀时,WScript.CreateObject会使Windows脚本主机崩溃

Vbscript 为WinHTTPRequest指定事件处理程序前缀时,WScript.CreateObject会使Windows脚本主机崩溃,vbscript,wsh,winhttp,windows-scripting,winhttprequest,Vbscript,Wsh,Winhttp,Windows Scripting,Winhttprequest,根据WinHTTPRequest,它有四个事件处理程序,可以通过指定事件处理程序前缀来访问。不幸的是,这样做会导致Windows脚本主机崩溃 以下代码使Windows脚本主机崩溃: Set oHTTP = WScript.CreateObject( "WinHttp.WinHttpRequest.5.1", "oHTTP_" ) 这段代码工作得很好: Set oHTTP = WScript.CreateObject( "WinHttp.WinHttpRequest.5.1" ) 想知道为什么

根据WinHTTPRequest,它有四个事件处理程序,可以通过指定事件处理程序前缀来访问。不幸的是,这样做会导致Windows脚本主机崩溃

以下代码使Windows脚本主机崩溃:

Set oHTTP = WScript.CreateObject( "WinHttp.WinHttpRequest.5.1", "oHTTP_" )
这段代码工作得很好:

Set oHTTP = WScript.CreateObject( "WinHttp.WinHttpRequest.5.1" )

想知道为什么吗?

它在任何方面都不是规范的一部分。一厢情愿的编程很少奏效

创建并返回对自动化对象的引用

论据

服务器名

必需的。提供对象的应用程序的名称

字体名

必需的。要创建的对象的类型或类

位置

可选。要在其中创建对象的网络服务器的名称

如果您想制定自己的愿望规范,请查看是否可以在此规范中添加自己的参数

来自GetRef的帮助

返回对可绑定到事件的过程的引用

论据

反对

必需的。与事件关联的对象的名称

事件

必需的。要将函数绑定到的事件的名称

procname

必需的。包含与事件关联的子过程或函数过程名称的字符串


CreateObject和WScript.CreateObject之间存在差异。请注意,我指定了WScript.CreateObject。您可以在这里了解差异:第一个示例在Windows7x64上非常适合我。你说的“撞车”到底是什么意思?事件查看器中是否存在任何错误?你是如何运行脚本的?我在Windows10x64上也看到了这一点。它生成了一个C0000005 GPF。我在Windows XP的另一种语言中发现了另一个引用。所以,听起来这是WinHttp事件的问题。
 CreateObject(servername.typename [, location])
Set object.eventname = GetRef(procname)