2011-02-01 46 views
1

javascript函數我已經寫了很多,我想在我的VB6應用程序使用效率和節省時間調用從VB6

是它可以調用從VB6 javascript函數的JavaScript函數?如果可能,你可以幫我一些代碼嗎?

+0

你爲什麼用javascript編寫它們,如果你需要它們在VB中? – CyberDude 2011-02-01 17:47:04

+0

我曾經在JavaScript中使用過它們。由於JavaScript支持正則表達式,所以JavaScript似乎更快速地處理字符串。在VB中,你必須使用腳本控制,它有一個性能問題 – Smith 2011-02-01 18:27:20

回答

2

我毫不猶豫地這樣說,但您可以使用Windows腳本控制ActiveX控件並將其嵌入到您的VB6應用程序中,然後運行您的JavaScript代碼,但可能需要稍作調整,但請勿這樣做。你可能會認爲這對你來說是有效率和節省時間的,但事實是你將花費各種額外的時間來處理你的「解決方法」。此外,將代碼移植到VB6將使其運行速度更快。如果您需要某種可擴展性,我只會使用腳本方法。

添加對腳本運行時和腳本控件1.0的引用。
注意:在本例中,變量scode是作爲字符串傳遞給函數的javascript代碼。由於代碼只是一個字符串,你可以傳入任何你想要的變量,但是,從代碼中取回東西要複雜得多。代碼可以即時創建或從文本文件中檢索。

在此示例中,代碼作爲字符串傳遞,然後搜索字符串以查看它是否包含名爲OnProgramLoad的函數。如果有,則調用該函數。

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正則表達式庫有更好的方法:
http://support.microsoft.com/kb/818802

添加到微軟的VBScript正則表達式5.5參考,然後移植你的代碼...

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