用户操作
[即时聊天] [发私信] [加为好友]
邓捷ID:normandj
1326次访问,排名2万外,好友0人,关注者0人。
temp
normandj的文章
原创 12 篇
翻译 0 篇
转载 10 篇
评论 1 篇
normandj的公告
永远不要嫌弃你的父母行动迟缓,因为你永远想象不出你小的时候他们是如何耐心地教你走路; 永远不要嫌弃你的父母学不会电脑,因为你永远不会知道在你小的时候他们是如何不厌其烦地教你认字;
最近评论
normandj:Option Explicit

Private Const NORMAL_PRIORITY_CLASS = &H20&

Private Const STARTF_USESTDHANDLES = &H100&

Private Const STARTF_USESHOWWINDOW = &H1……
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 VB6语言脚本解释器收藏

    新一篇: Excel禁用直接粘贴功能 | 旧一篇: 如何在VB中截获shell程序的输出

      讨论如何让自己的应用程序支持脚本   最初也是在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

    发表于 @ 2008年07月01日 10:44:01|评论(loading...)|编辑|收藏

    新一篇: Excel禁用直接粘贴功能 | 旧一篇: 如何在VB中截获shell程序的输出

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © normandj