2016-07-26 3 views
0

Visual Basic을 처음 사용하며 시스템 개체의 기본 동작을 변경하는 방법을 궁금합니다. 내가 성취하고자하는 것은 HTTP를 통해 다운로드하거나 프로세스를 시작하는 것과 같은 일부 시스템 기능을 "패치"하는 것입니다. 시스템 개체의 동작을 변경하는 방법

나는 나는 그것이

Function PatchedMethod(Method, Url) 
    WScript.Echo Method, Url  
End Function 

Dim xHttp: Set xHttp = CreateObject("Microsoft.XMLHTTP") 
Dim bStrm: Set bStrm = CreateObject("Adodb.Stream") 

'//patching 
Set xHttp.Open = GetRef(PatchedMethod) 

xHttp.Open "GET", "https://www.python.org/static/img/python-logo.png", False 

의 일부 파이썬 해당하는 조각을 (내가이 일을 만들 수 없습니다) 내가 원하는 것을 달성하지만 성공을 할 수 있습니다 생각 코드의 조각을 작성하는 관리 내가 달성하려는 것은 그들이 JavaScript와 같은 다른 언어처럼의 VBScript에서

import urllib.request 

def mockup_urlopen(*args, **kwargs): 
    print("Trying to download {}".format(args[0])) 
    exit() 

urllib.request.urlopen = mockup_urlopen 
r = urllib.request.urlopen("https://www.python.org/static/img/python-logo.png") 
+0

VBScript에서는 불가능합니다. –

답변

1

기능은 "일류 객체"없는 것입니다. 그냥 재 할당 할 수는 없습니다. 기능을 확장하기 위해 COM 개체를 래핑하는 표준 방법은 자신의 클래스에서 구성하는 것입니다. 즉, VBScript Class을 만들어 코드에 필요한 기능에 대한 메서드를 노출하고 캡슐화를 통해 래핑하는 "실제"개체를 내부적으로 호출합니다. 그런 다음 코드는 내부 객체가 아닌 클래스의 인스턴스를 사용하여 작업을 수행합니다.

관련 문제