怎样用vb编写ActiveX dll?
看到问题题目您可能感到很容易,请您接着往下看。我所需要写的ActiveXdll是从一个很小的vbexe转化过来的。我原来写的exe很简单,但是需要调用一个外部dll,整个...
看到问题题目您可能感到很容易,请您接着往下看。
我所需要写的ActiveX dll是从一个很小的vb exe转化过来的。
我原来写的exe很简单,但是需要调用一个外部dll,整个程序就一个子程序组成,子程序运行完整个程序关掉,运行起来一点问题都没有。但是,由于是exe格式,安全性不好,所以想写成一个ActiveX dll文件。
简单的ActiveX dll编写我也会一点,可是需要调用外部dll的ActiveX dll文件就不会了,原来exe文件所加载的两个bas文件还能用吗,当然还有其他需要请教的地方,最好能留下您的联系方式。 展开
我所需要写的ActiveX dll是从一个很小的vb exe转化过来的。
我原来写的exe很简单,但是需要调用一个外部dll,整个程序就一个子程序组成,子程序运行完整个程序关掉,运行起来一点问题都没有。但是,由于是exe格式,安全性不好,所以想写成一个ActiveX dll文件。
简单的ActiveX dll编写我也会一点,可是需要调用外部dll的ActiveX dll文件就不会了,原来exe文件所加载的两个bas文件还能用吗,当然还有其他需要请教的地方,最好能留下您的联系方式。 展开
1个回答
展开全部
在调用标准dll与ActiveX dll有本质区别,调用外部标准dll需要用declare声明,而且要知道接口。
既然你在exe里会调用,那么Activex DLL其实就是exe里写一个Class类。不过bas模块里的全局代码是不能作用于Class类的。
因为不知道你的dll接口是什么内容,我就随便用个API代替你的dll接口声明给你个例子。
首先创建一个ActiveX Dll工程,写如下代码:
'声明外部DLL调用接口函数
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
'定义一个方法,里面调用外部DLL
Sub mySetPixel(ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long)
SetPixel hdc, x, y, crColor '调用外部DLL
End '调用完外部DLL后,关闭程序
End Sub
接下来把标准dll声明放在Class类的最上部即可,然后写个方法或者属性,并在里面放入调用外部dll的代码。这样其它exe程序就可以引用这个activex dll的 mySetPixel方法,实际上这个方法调用的就是外部dll。
使用起来就简单了,EXE在引用Activex dll后,再写入下面代码:
Dim x As New Class1 '调用activx dll
Private Sub Command1_Click()
Form1.ScaleMode = 3
x.mySetPixel Form1.hdc, 100, 100, RGB(255, 0, 0) '调用这个函数,执行后程序就会关闭
End Sub
嗯,就这么简单便可以搞定!
既然你在exe里会调用,那么Activex DLL其实就是exe里写一个Class类。不过bas模块里的全局代码是不能作用于Class类的。
因为不知道你的dll接口是什么内容,我就随便用个API代替你的dll接口声明给你个例子。
首先创建一个ActiveX Dll工程,写如下代码:
'声明外部DLL调用接口函数
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
'定义一个方法,里面调用外部DLL
Sub mySetPixel(ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long)
SetPixel hdc, x, y, crColor '调用外部DLL
End '调用完外部DLL后,关闭程序
End Sub
接下来把标准dll声明放在Class类的最上部即可,然后写个方法或者属性,并在里面放入调用外部dll的代码。这样其它exe程序就可以引用这个activex dll的 mySetPixel方法,实际上这个方法调用的就是外部dll。
使用起来就简单了,EXE在引用Activex dll后,再写入下面代码:
Dim x As New Class1 '调用activx dll
Private Sub Command1_Click()
Form1.ScaleMode = 3
x.mySetPixel Form1.hdc, 100, 100, RGB(255, 0, 0) '调用这个函数,执行后程序就会关闭
End Sub
嗯,就这么简单便可以搞定!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询