请教一个怪问题,vb 或 vba能够做到直接运行源码文件吗?
有没有可能采用命令行的方式类似: vb.exe abc.bsc这种方式直接得到bsc文件的运行结果?
我只是想知道,能这么做吗?记得以前的foxpro是可以这么做的,无需编译直接就可以运行,vb应该也是解释执行的,不知能不能这么做。
给出
有没有可能采用命令行的方式类似: vb.exe abc.bsc这种方式直接得到bsc文件的运行结果?
我只是想知道,能这么做吗?记得以前的foxpro是可以这么做的,无需编译直接就可以运行,vb应该也是解释执行的,不知能不能这么做。
给出
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 = "'欢迎访问www.d9studio.com"
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
9x需要Msvbvm60.dll或者用
http://www.ziyuan8.com/down/Soft/252/253/ZY8_8223.html
制作软件
VBA是解释执行的
暂缓结贴,看看还有没有别的意见。
保证参与者人人有分,分不够,我再开新贴就是了。