关键字: 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脚本语言学习
该教程指导您如何使用 Mercury Interactive 强大的功能测试工具 QuickTest 对您的应用程序进行测试等基本知识,您可以根据自身情况对教程进度进行相应调整。 通过 QuickTest 可以测试标准 Web 对象、ActiveX 控件和...
VB笔记
这是vb6.0的学习笔记,大家一起来学习吧
shell学习基本命令,可以帮助初学者快速掌握较全面的shell脚本知识
Go语言学习笔记.pdf 共174页
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...
VB.NET 2005 语言基础 常用控件 高级用户界面
Go语言学习笔记基础入门篇,主要介绍Go语言基础语法,数据类型,逻辑语句等。
自己整理的Shell脚本学习笔记,脚本实例可直接运行:1. 变量和字符串;2. 传递参数;3. 基本运算符;4. echo&printf;&test;;5. 流程控制;6. 函数;7. 输入输出重定向&文件嵌入
别人收集的VB 学习笔记,我拿来跟大家分享!不能搞商业化哦!
Perl学习笔记中的所有脚本文件,https://blog.csdn.net/zgezi/category_10259467.html
Tcl.md 脚本语言学习笔记
VB85个例子+学习笔记, VB85个例子+学习笔记, VB85个例子+学习笔记
Linux下的汇编语言学习笔记 .pdf Linux下的汇编语言学习笔记 .pdf Linux下的汇编语言学习笔记 .pdf Linux下的汇编语言学习笔记 .pdf Linux下的汇编语言学习笔记 .pdf Linux下的汇编语言学习笔记 .pdf Linux下的汇编...
这是因为,在 Unix 中,shell 可不是简单的命令解释器(典型的有 Windows 中的 DOS ),而是一个全功能的编程环境。 这并不意味着 shell 非常容易学通,您知道,好事多磨,这还是要花点工夫的。;-) 但请相信我,这...
Go简单易学,性能很好,且支持各类主流平台。已有大量项目采用Go编写,其中就包括Docker、terraform等明星作品,其开发和执行效率早已被证明。