我已经编写了很多javascript函数,我想在我的vb6应用程序中使用它来提高效率和节省时间
是否可以从vb6调用java-script函数? 如果可能的话,你能帮我一些代码吗?
答案 0 :(得分: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
添加对Microsoft VBScript Regular Expressions 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