2011-02-01 8 views
1

에서 자바 스크립트 함수 호출 나는 VB6에서 자바 스크립트 함수를 호출 할 수 있습니다 내가는 VB6

을 저장 효율과 시간을 내 VB6 응용 프로그램에서 사용할 자바 스크립트 기능을 많이 썼다? 가능하면 몇 가지 코드로 도와 주시겠습니까?

+0

왜 당신이 VB에서 그들을 필요로한다면 자바 스크립트로 작성 했습니까? – CyberDude

+0

나는 JavaScript에서 한 번 사용했습니다. JavaScript는 정규식을 지원하기 때문에 문자열 프로세싱을위한 VB보다 빠르다. 비주얼 베이직에서 성능 문제가있는 스크립팅 컨트롤을 사용해야합니다 – Smith

답변

2

나는 이것을 주저하지만 Windows Script Control ActiveX 컨트롤을 사용하여 VB6 응용 프로그램에 포함시킨 다음 약간의 조정만으로 JavaScript 코드를 실행할 수는 있지만 수행하지 마십시오. 당신은 그것이 효율적이고 시간을 절약 할 수 있다고 생각할지도 모르지만, 현실은 당신이 당신의 "일터"를 다루는 모든 여분의 시간을 보낼 것입니다. 또한 VB6에 코드를 이식하면 훨씬 빠르게 실행됩니다. 일종의 확장 성이 필요한 경우에만 스크립팅 방법을 사용합니다.

스크립팅 런타임 및 스크립트 컨트롤 1.0에 대한 참조를 추가하십시오.
참고 :이 예제에서 변수 scode는 함수로 문자열로 전달되는 javascript 코드입니다. 코드는 단순히 문자열 일 뿐이므로 원하는 변수를 전달할 수는 있지만 코드에서 다시 얻는 것은 훨씬 더 복잡합니다. 코드는 즉시 작성하거나 텍스트 파일에서 검색 할 수 있습니다.

이 예제에서 코드는 문자열로 전달 된 다음 OnProgramLoad라는 함수가 들어 있는지 문자열을 검색합니다. 함수가 호출되면 해당 함수가 호출됩니다. ,
http://support.microsoft.com/kb/818802

은 마이크로 소프트 VBScript 정규 표현식 5.5에 대한 참조를 추가합니다 :

Public Sub OnProgramLoad(byval scode as string) 
Dim sctest As ScriptControl 

If Len(scode) < 1 Then Exit Sub 

If InStr(1, scode, "OnProgramLoad", vbTextCompare) = 0 Then Exit Sub 

Set sctest = New ScriptControl 

With sctest 
    .Language = "JScript" 
    .AllowUI = True 
    .AddObject "Application", App 
    .AddObject "Clipboard", Clipboard 
    .AddObject "Printer", Printer 
    .AddObject "Screen", Screen 
    .AddCode scode 
    .Run "OnProgramLoad" 
    End With 
Set sctest = Nothing 

End Sub 

당신이 더 잘 VB6에 루틴을 포팅하고 당신이 VB6에서 정규식 라이브러리에 액세스해야하는 경우 더 나은 방법이 있습니다 것 귀하의 코드를 포트 ...

Function TestRegExp(myPattern As String, myString As String) 
    'Create objects. 
    Dim objRegExp As RegExp 
    Dim objMatch As Match 
    Dim colMatches As MatchCollection 
    Dim RetStr As String 

    ' Create a regular expression object. 
    Set objRegExp = New RegExp 

    'Set the pattern by using the Pattern property. 
    objRegExp.Pattern = myPattern 

    ' Set Case Insensitivity. 
    objRegExp.IgnoreCase = True 

    'Set global applicability. 
    objRegExp.Global = True 

    'Test whether the String can be compared. 
    If (objRegExp.Test(myString) = True) Then 

    'Get the matches. 
    Set colMatches = objRegExp.Execute(myString) ' Execute search. 

    For Each objMatch In colMatches ' Iterate Matches collection. 
     RetStr = RetStr & "Match found at position " 
     RetStr = RetStr & objMatch.FirstIndex & ". Match Value is '" 
     RetStr = RetStr & objMatch.Value & "'." & vbCrLf 
    Next 
    Else 
    RetStr = "String Matching Failed" 
    End If 
    TestRegExp = RetStr 
End Function 
+0

일부 코드 – Smith

+0

으로 자바 스크립트 코드에 인수를 전달할 수 있습니까? 그렇다면 일부 예제는 높이 평가됩니다. – Smith

+0

자바 스크립트 코드는 간단한 문자열이므로 문자열을 수정하여 원하는대로 전달할 수 있습니다. 위의 예에서 내 노트를 참조하십시오. –