以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [结贴]实现通过vs2008添加动态代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=9487)

--  作者:qtcks
--  发布时间:2011/4/17 12:35:00
--  [结贴]实现通过vs2008添加动态代码

如果要使用第三方的开发工具,请引用foxtable.exe和foxtable.lib.dll,这两个文件包括foxtable所有公开的类型。

如何实现以下代码?

 

示例

下面的代码定义了一个简单的Sum函数:

Dim Code As string
Code
= "Dim Val1 As Integer = 1" & vbcrlf
Code
= Code & "Dim Val2 As Integer = 2" & vbcrlf
Code
= Code & "Dim Sum As Integer = Val1 + Val2" & vbcrlf
Code
= Code & "Return Sum"
Functions.Add(
"Sum",Code)
Functions.Complie()

这样我们就可以在其余地方调用此函数:

Functions.Execute("Sum")

[此贴子已经被作者于2011-4-17 13:54:49编辑过]

--  作者:qtcks
--  发布时间:2011/4/17 13:52:00
--  

睡了一觉,神清气爽啊,一下就通了。附攻略

 1、在vs2008中,新增一个新项目,

 


图片点击可在新窗口打开查看此主题相关图片如下:添加引用.png
图片点击可在新窗口打开查看

 

2、添加新建的项目中=>项目=>添加引用 (foxtable的引用)

图片点击可在新窗口打开查看此主题相关图片如下:新增类库.png
图片点击可在新窗口打开查看

3、附代码

Imports Foxtable
Public Class Class1
Public Function xb()
Dim x As String = "Return 123"
Foxtable.Functions.Add("Sum", x)
Foxtable.Functions.Complie()
Return True
End Function
End Class

 

4、编译生成dll文件。并复制到foxtable程序目录下。我的是(by.dll)

 

5、打开foxtable并添加外部引用

 


图片点击可在新窗口打开查看此主题相关图片如下:外部引用.png
图片点击可在新窗口打开查看

 

6、打开foxtable 的命令窗口输入一下命令

Dim x As New by.Class1
output.show(x.xb)
output.show(Functions.Execute("sum"))

 

结果如下。调试成功了哦。

 

 


--  作者:qtcks
--  发布时间:2011/4/17 13:54:00
--  

调试成功咯

 


图片点击可在新窗口打开查看此主题相关图片如下:调试成功.png
图片点击可在新窗口打开查看

 

vs2008 代码

图片点击可在新窗口打开查看此主题相关图片如下:代码片段.png
图片点击可在新窗口打开查看


--  作者:狐狸爸爸
--  发布时间:2011/4/17 15:09:00
--  

呵呵,看来睡好觉,才能学得好啊。

图片点击可在新窗口打开查看


--  作者:lihe60
--  发布时间:2011/4/17 16:25:00
--  

主要用途是什么?


--  作者:qtcks
--  发布时间:2011/4/17 16:39:00
--  

嘿嘿,用途嘛················

准备搞foxtable版B/s程序,为实现内部函数代码加密。嘿嘿。


--  作者:blackzhu
--  发布时间:2011/4/18 7:51:00
--  
也是一高手中的高手.
--  作者:santde
--  发布时间:2015/12/23 18:48:00
--  
foxtable版B/s程序整出来了没有
--  作者:santde
--  发布时间:2016/1/16 16:45:00
--  

请教

Dim x As New by.Class1
output.show(x.xb)
output.show(Functions.Execute("sum"))

这段代码执行 没问题有预期效果

 

但如果

Dim x As New by.Class1
output.show(x.xb)

二次执行就不行,提示键值已有,是啥原理


--  作者:大红袍
--  发布时间:2016/1/16 17:22:00
--  

要先吧函数remove掉,如

 

Functions.remove("函数")
Dim Code As String
Code = "msgbox(123)" & vbcrlf
Functions.Add("函数",Code)
Functions.Complie()
Functions.Execute("函数")