`
hereson2
  • 浏览: 451789 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

学习笔记,VB6语言脚本解释器

阅读更多
关键字: VB 脚本 作者:董含君

讨论如何让自己的应用程序支持脚本

最初也是在CSDN的Blog上找的,但是我再次去找的时候发现已经找不到了.在此对原作者的提示表示感谢...More...关键字: VB 脚本 作者:董含君

讨论如何让自己的应用程序支持脚本

最初也是在CSDN的Blog上找的,但是我再次去找的时候发现已经找不到了.在此对原作者的提示表示感谢

使用范围,可以让用户开发的时候使用脚本,用exe或者dll进行接口开发虽然功能强大,但是不方便,用脚本,或者大家熟知的脚本就方便多了.

方法1 :自己作编译器 解释器

方法2 :利用现有的解释器,用脚本,省略编译器

很明显,第二种方法简单的多.问题是现有的解释器(我叫做脚本引擎)有什么,去哪里找,怎么支持...

python比较流行,可以用于游戏脚本引擎,但是我目前还不会用(毕竟,我不是上帝)

VBA 就是office的vba,用vb6的语法,我选这个.因为我见了vb就特别亲切...

估计凯比用不上这项技术吧....

最关键的就是找到这个传说中的vba6.dll 他来负责解释

Private Declare Function EbExecuteLine Lib "vba6.dll" ( _
ByVal pStringToExec As Long, _
ByVal Unknownn1 As Long, _
ByVal Unknownn2 As Long, _
ByVal fCheckOnly As Long) As Long

dll声明,顾名思义,就是执行一行

第一个参数,指向命令行字符串的指针

剩下的参数不知道作甚么用的......

用的时候:

封装一下这样用起来方便

Function stepline(ByVal cmd As String) As Long 'cmd就是vb6代码
Dim l As Long '临时变量,意义不大
l = EbExecuteLine(StrPtr(ByVal cmd), 0, 0, 0) '这就是实质,简单吧
Debug.Print CStr(l) + ":" + cmd '调试用的,无意义
End Function

你可以直接这么用

Debug.Print EbExecuteLine(StrPtr("dim a as long,b as long,c as long"), 0, 0, 0)
Debug.Print EbExecuteLine(StrPtr("a=" & 3), 0, 0, 0)
Debug.Print EbExecuteLine(StrPtr("b=" & 5), 0, 0, 0)
Debug.Print EbExecuteLine(StrPtr("c=" & 2), 0, 0, 0)
Debug.Print EbExecuteLine(StrPtr("clipboard.settext (a+b)/c"), 0, 0, 0)
Debug.Print EbExecuteLine(StrPtr("msgbox Clipboard.GetText"), 0, 0, 0)

也可以

stepline "dim a as long,b as long,c as long"
stepline "a=" & 3
stepline "b=" & 5
stepline "c=" & 2
stepline "clipboard.settext (a+b)/c"
stepline "msgbox Clipboard.GetText"

或者将文本放入listbox,甚至可以逐行进行(当然,有兴趣你可以自己做调试器)

If List1.ListCount = 0 Then
MsgBox "没有代码"
Else
List1.ListIndex = 0
Dim i As Long
For i = 0 To List1.ListCount - 1
stepline List1.List(i)
Next
End If

当然,直接执行文本也是可以的
假定text1.text是全部的代码

List1.Clear
Dim Arr() As String
Dim i As Long
Dim s As String
Arr = Split(Text1.Text, Chr(13) + Chr(10))
For i = 0 To UBound(Arr())
stepline Arr(i)
Next

简单吧

而且这些完全是面向对象的

你的程序就相当于虚拟机,vba6.dll就是解释器

脚本可以做什么!!连API跟COM都可以用

如果你的虚拟机支持(就是程序提供现有的对象),他可以直接用(也称为API,不过是你提供的,不是Windows提供的而已)

给出几个实例脚本(以下是过程,自动填充到text1)

Private Sub Command4_Click()
Text1.Text = "'例子 VB6语法"
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "dim a as long,b as long,c as long"
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "a=" & 3
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "b=" & 5
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "c=" & 2
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "clipboard.settext (a+b)/c"
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "msgbox Clipboard.GetText"
End Sub

Private Sub Command5_Click()
Text1.Text = "'例子 真的是面向对象的,更改新的标题"
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "dim f as form1"
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "set f = new form1"
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "f.show"
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "f.caption=""aaaa"" "
End Sub

Private Sub Command6_Click()
Text1.Text = "'例子 运行应用程序,并且发送按键!!"
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "shell ""notepad.exe c:\example.txt"",vbnormalfocus "
Text1.Text = Text1.Text + Chr(13) + Chr(10) + "sendkeys ""Hello World!"" "
End Sub

作者Blog:http://blog.csdn.net/a11s/
分享到:
评论

相关推荐

    QTP关键教程+学习笔记+VB脚本语言学习

    QTP关键教程+学习笔记+VB脚本语言学习

    QTP关键教程+学习笔记+VB脚本语言学习(CHM格式)

    该教程指导您如何使用 Mercury Interactive 强大的功能测试工具 QuickTest 对您的应用程序进行测试等基本知识,您可以根据自身情况对教程进度进行相应调整。 通过 QuickTest 可以测试标准 Web 对象、ActiveX 控件和...

    VB笔记VB笔记

    VB笔记

    vb6.0 学习笔记

    这是vb6.0的学习笔记,大家一起来学习吧

    linux脚本shell学习笔记

    shell学习基本命令,可以帮助初学者快速掌握较全面的shell脚本知识

    Go语言学习笔记.pdf 共174页

    Go语言学习笔记.pdf 共174页

    R语言定义学习笔记.doc

    R语言定义学习笔记.doc R语言定义学习笔记.doc R语言定义学习笔记.doc R语言定义学习笔记.doc R语言定义学习笔记.doc R语言定义学习笔记.doc R语言定义学习笔记.doc R语言定义学习笔记.doc R语言定义学习笔记.doc R...

    R语言学习笔记,R语言数据分析从入门到进阶-代码合集

    R语言学习笔记,R语言数据分析从入门到进阶-代码合集R语言学习笔记,R语言数据分析从入门到进阶-代码合集R语言学习笔记,R语言数据分析从入门到进阶-代码合集R语言学习笔记,R语言数据分析从入门到进阶-代码合集R...

    VB.NET 学习笔记

    VB.NET 2005 语言基础 常用控件 高级用户界面

    Go语言学习笔记

    Go语言学习笔记基础入门篇,主要介绍Go语言基础语法,数据类型,逻辑语句等。

    Shell脚本学习笔记

    自己整理的Shell脚本学习笔记,脚本实例可直接运行:1. 变量和字符串;2. 传递参数;3. 基本运算符;4. echo&printf;&test;;5. 流程控制;6. 函数;7. 输入输出重定向&文件嵌入

    VB 学习笔记

    别人收集的VB 学习笔记,我拿来跟大家分享!不能搞商业化哦!

    Perl学习笔记中的所有脚本文件

    Perl学习笔记中的所有脚本文件,https://blog.csdn.net/zgezi/category_10259467.html

    Tcl.md 脚本语言学习笔记

    Tcl.md 脚本语言学习笔记

    VB85个例子+学习笔记

    VB85个例子+学习笔记, VB85个例子+学习笔记, VB85个例子+学习笔记

    Linux下的汇编语言学习笔记 .pdf

    Linux下的汇编语言学习笔记 .pdf Linux下的汇编语言学习笔记 .pdf Linux下的汇编语言学习笔记 .pdf Linux下的汇编语言学习笔记 .pdf Linux下的汇编语言学习笔记 .pdf Linux下的汇编语言学习笔记 .pdf Linux下的汇编...

    shell脚本学习笔记

    这是因为,在 Unix 中,shell 可不是简单的命令解释器(典型的有 Windows 中的 DOS ),而是一个全功能的编程环境。 这并不意味着 shell 非常容易学通,您知道,好事多磨,这还是要花点工夫的。;-) 但请相信我,这...

    Go语言学习笔记.pdf

    Go简单易学,性能很好,且支持各类主流平台。已有大量项目采用Go编写,其中就包括Docker、terraform等明星作品,其开发和执行效率早已被证明。

Global site tag (gtag.js) - Google Analytics