如何在.exe文件中调用和执行VBScript命令和函数



这个问题可能有点愚蠢,但我很好奇这是否可能。我有一个名为library的文件。Xxx(包含vbscript代码),其中包含预定义的函数。我还有一个文件测试。Vbs(也包含vbscript代码,只是这里我使用的函数,在library.xxx中定义)。在测试。VBS的库是"包含"的,也就是说,我可以使用library.xxx中的函数。例如,有一个名为ProgramFiles的函数,如果我在测试中调用它。我将收到Program Files文件夹的位置。

问题是,那个库。通过这种方式可以看到XXX。有一个应用程序叫做ScriptCryptor。有了这个应用程序,我可以打开我的图书馆。XXX并将其制作为。exe,这对我来说会更好,因为它不是清晰的文本。

我的问题是现在,我怎么能执行在test.vbs调用的命令?我想我应该逐行读试卷。VBS文件,并以某种方式处理它。但如何?我怎么知道如果行我读是一个函数或只是一个变量?还是两个?如何处理它们呢?

有办法吗?

希望你能理解我想要什么。

谢谢!

到目前为止,完成此任务的最简单方法是包含"library "。Vbs"进入你的"测试。根据"文件。

例如:

Library.vbs:

Function ProgramFiles()
    ProgramFiles = "C:Foo"
End Function

test.vbs:

sub includeFile (fSpec)
    dim fileSys, file, fileData
    set fileSys = createObject ("Scripting.FileSystemObject")
    set file = fileSys.openTextFile (fSpec)
    fileData = file.readAll ()
    file.close
    executeGlobal fileData
    set file = nothing
    set fileSys = nothing
end sub
includeFile "library3.vbs"
wscript.echo ProgramFiles

你的问题似乎表明你可能已经这样做了,所以如果你是,那么我道歉。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

如果明文真的困扰你,那么从我所看到的,没有办法使ScryptCryptor的可执行文件提供给你的vbscript。

相反,您可以创建一个COM Library DLL作为测试中的对象。根据文件。

这样做的缺点是必须学习一门新语言。Visual Studio Visual Basic当然不同于Windows Shell Script Visual Basic,但它会为你想要的工作。

步骤:

  1. 下载Visual Studio 2013 Express for Windows Desktop(或Ultimate的试用版或您认为适合的任何版本)
  2. 以管理员身份打开Visual Studio
  3. 创建新项目。选择"Visual Basic"模板下的"Class Library"
  4. 复制粘贴下面的代码

    <ComClass(OurLibrary.ClassId, OurLibrary.InterfaceId, OurLibrary.EventsId)>Public Class OurLibrary

    Private userNameValue As String
    Public Const ClassId As String = "40491A82-D53A-46A6-B7E0-1CDF78A33AB6"
    Public Const InterfaceId As String = "B49C996C-B039-471D-BF17-0DDA5B3CF517"
    Public Const EventsId As String = "6245E3DD-DEB5-4B75-AC03-F4430BC18FDE"
    Public Sub New()
        MyBase.New()
    End Sub
    Public Sub mycopy(mySource As String, myDest As String)
        My.Computer.FileSystem.CopyFile(mySource, myDest, True)
    End Sub
    

    End Class

  5. 点击Project -> ClassLibrary1 Properties

  6. 点击"Compile",勾选"Register for COM interop"
  7. 点击构建->构建解决方案

现在您有了一个要测试的库。VBS可以使用:

Set myLib = CreateObject("ClassLibrary1.OurLibrary")
mySource = "C:mytextfile1.txt"
myDest = "C:mytextfile2.txt"
myLib.mycopy mySource, myDest

如果你喜欢我测试。vbs需要调用为C:WindowsSysWOW64cscript.exe test.vbs

有关在Visual Basic中创建COM类的更多信息,请参阅此处:演练:使用Visual Basic创建COM对象

最新更新