急:API方式调用DLL,有个例子可以,Copy到我新建的工程里不行,为什么?
我从网上下载了个例子,是用DiskID32.DLL得到硬盘物理ID的,
例子中有源代码,很简单:只是一个工程加了一个form,DiskID32.DLL和工程及生成的exe在同一目录下.并且DLL没有手动注册,下载下来运行就可以正常使用.在form中有一个按钮和两个文本框.代码如下:
Private Declare Function DiskID32 Lib "DiskID32.DLL" (ByRef DISKMODEL As Byte, ByRef DiskID As Byte) As Long
Dim arrSBox(0 To 255) As Integer
Dim arrPW(0 To 255) As Integer
Dim Bi As Integer, Bj As Integer
Const serialCodeLen1 = 8
Const serialCodeLen2 = 15
Const keyCodeLen = 8
Dim mresult
Private Sub Command1_Click()
Dim bDiskModel(20) As Byte
Dim bDiskID(20) As Byte
Dim strDiskModel As String
Dim strDiskID As String
DiskID32 bDiskModel(0), bDiskID(0)
strDiskModel$ = bDiskModel()
strDiskModel$ = StrConv(strDiskModel$, vbUnicode)
Text1.Text = strDiskModel
strDiskID$ = bDiskID()
strDiskID = StrConv(strDiskID$, vbUnicode)
Text2.Text = strDiskID
End Sub
我也同样建了一个新工程,加了一个form,把这个DLL放在同一目录下面,Copy了上面的代码,当我运行的时候确提示找不到DLL?这是为什么?请指点,谢谢.
另外,我还有一点不明白:这里的字符串后加$符是什么意思?谢谢
strDiskModel$ = bDiskModel() strDiskModel$ = StrConv(strDiskModel$, vbUnicode)
Text1.Text = strDiskModel
strDiskID$ = bDiskID()
strDiskID = StrConv(strDiskID$, vbUnicode)
Text2.Text = strDiskID
分不够再加,请高手一定指点一下.或加我QQ:419356949
[解决办法]
DLL文件是要引用的.
[解决办法]
dll要注册
$ 感觉上可有可无。
[解决办法]
Private Declare Function DiskID32 Lib "DiskID32.DLL" (ByRef DISKMODEL As Byte, ByRef DiskID As Byte)
应该是以api的方式使用的,不是引用的问题
[解决办法]
$是用来定义变量,这里变量已经定义,没有也可以,这里用来表明变量类型,方便读程序
[解决办法]
第一种方案: 楼主试一下把 DLL 复制到 System32 目录下。
第二种方案:
主菜单“工程”→“引用……”,再点右上方的“浏览……”按钮,指定你的 DLL 文件。
[解决办法]
就把 DLL 复制到 System32 目录下
其他没有问题(编译器不会到当前目录找dll,编译成exe才会先到当前目录找dll的)
所以你用编译器全编译执行,是找不到的
[解决办法]