WScript.CreateObject crashes Windows Scripting Hos

2019-02-20 20:46发布

问题:

According to the MSDN documentation WinHTTPRequest has four event handlers which should be accessible by specifying an event handler prefix. Unfortunately, doing so causes Windows Scripting Host to crash.

The following code crashes Windows Scripting Host:

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

This code works just fine:

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

Any thoughts as to why?

回答1:

It's not part of the specification in any way. Wishful programming rarely works.

Creates and returns a reference to an Automation object.

 CreateObject(servername.typename [, location])

Arguments

servername

Required. The name of the application providing the object.

typename

Required. The type or class of the object to create.

location

Optional. The name of the network server where the object is to be created.

If you want to make up your own wishful specifications, see if you can add your own parameters to this one.

From Help for GetRef

Returns a reference to a procedure that can be bound to an event.

Set object.eventname = GetRef(procname)

Arguments

object

Required. Name of the object with which event is associated.

event

Required. Name of the event to which the function is to be bound.

procname

Required. String containing the name of the Sub or Function procedure being associated with the event.