怎样用代码引用? 莫名这位,应该是GG吧,你说得太不清楚了,结果是别人听不太懂你的意思,可能是自己水平有限吧,http://www.mjtd.com/a2/list.asp?id=488这个是以前我在明经看到的相关的文章,用VLisp调用VB写得DLL,大家可以看看先,让后也许就会懂一些不好怎么用文字表达的东西了, 使用VL调用VB编写的AcitveX DLL。
首先在VB中新建一个ActiveX DLL工程,工程名称为VBTest,新建一个类模块,名称为Test。
在类模块中加下下面的代码,其中GetComputerName的API函数是用于获取本地的计算机名称。具体说明参考API资料。
Private Declare Function APIGetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Property Get GetComputerName() As String
Dim strString As String
strString = String(255, Chr$(0))
APIGetComputerName strString, 255
strString = Left$(strString, InStr(1, strString, Chr$(0)))
GetComputerName = strString
End Property
完成后,编译成VBTest.DLL文件。
接下来,在VL中,首先获取该对象的引用。
(setq vltest (vlax-create-object "VBTest.test"))
接着,获取它的GetComputerName属性。
(setq name (vlax-get-property vltest 'getcomputername))
这时就会在IDE窗口中出现自己的计算机名称了。其它的使用类似,有兴趣的朋友可以自己去研究。
以下附上所有的代码。
这是以前在晓东CAD空间应一个朋友的要求而做的,感兴趣的可以参考。
http://www.xdcad.net/forum/showthread.php?s=&postid=231959#post231959
Taoyimaier老弟,那我就不客气了.
明经通道上那篇关于dll的文件早就看过了,我的dll就是参考它做的,在vba中调用成功.在lisp中调用就看不懂了,没有成功.因此求详细的lisp源程序.
什么时候能搞出来都行,反正我现在还在编程过程中,短时间内还用不上. 那天有时间帮你作一个简单的吧,可能你得VLisp用的还不太熟练,呵呵 不瞒您说,lisp我一窍不通. 程序我写出来了,VB的DLL代码如下
'该DLL虽然简单,但是其功能却是一般的VLisp所不容易实现的
'主要是VLisp不容易实现对话框功能(现在好像有一些第三方的软件,比如ObjectDCL可以实现一些),
'所以有时候我认为,学习DCL没有什么必要,好处就是使得你的Lisp程序更加一体化,但是我想DCL实现
'对话框功能也是几乎不可能的把 Designed by Taoyimaier
Function dia_show_test() As String
Dim return_str As String
dia_frm.dia1.ShowOpen
On Error GoTo errhand
return_str = dia_frm.dia1.FileName
dia_show_test = return_str
Exit Function
'下面的语句是使得选择了取消按钮后,不出现错误提示
errhand:
If Err.Number = 32755 Then
Err.Clear
End If
Exit Function
End Function
Function get_average(ByVal one As Single, ByVal two As Single, ByVal three As Single) As Single
get_average = (one + two + three) / 3
End Function
'然后将编译后的DLL用命令"regsvr32 dia_pro.dll"注册
'以便于在VLisp里用(vlax-create-object "dia_pro.dia_test")语句调用
VLisp内容如下
(vl-load-com)
(defun C:test(/ vla_obj_test file_obj) ;vla_obj_test是一个VLA对象,不同于Lisp里一些变量.
(setq vla_obj_test (vlax-create-object "dia_pro.dia_test"))
(setq file_obj (open (vlax-invoke-methodvla_obj_test 'dia_show_test) "r"))
(setq aa (read-line file_obj))
(setq bb (read-line file_obj))
(setq cc (read-line file_obj))
(close file_obj)
(princ (strcat "\n选取文件的前三行平均数为"
(rtos (vlax-invoke-method
vla_obj_test
'get_average
(atof aa)
(atof bb)
(atof cc)
)
)
)
)
(princ)
)
;在看该程序时,可以使用VLisp的监视器观看一些ActiveX变量相关信息,便于理解.
;程序功能,读取一个文本文件的前三行,将其求平均数,并将结果打印出来.
;注意选取文件的类型及格式要正确,该程序对这部分的处理没有花功夫.
差不多了吧,其实efan版主的代码也是一样的,它写得更有代表性,调用API也是vlisp
做不到的(只是我不会API),差不多了吧,以后有时间看看lisp的书,不难的,可能
关于ActiveX这部分开始有些不适应,等你懂了后,你会。。。。 程序附上 谢谢.等我的dll完全编完后再照样编一个lisp.到时候还不懂的话,再....不耻下问.....
页:
1
[2]