设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2860|回复: 5
打印 上一主题 下一主题

關于引用API函數....

[复制链接]
跳转到指定楼层
1#
发表于 2003-11-4 21:21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在使用API函數時,會先引用他,(不是"設定引用項目"那個)
如下:
Private Declare Function HDSerialNumRead Lib "HDSerialNumRead.dll" () As String
可是HDSerialNumRead.dll此文件在安裝目錄以下..
那怎么引用呢...
我試過,只能指定路徑引用,不能用變量來引用...
如:這樣可以
Private Declare Function HDSerialNumRead Lib "E:\TEST\HDSerialNumRead.dll" () As String
這樣不行..
Private Declare Function HDSerialNumRead Lib CURRENTPROJECT.PAHT & "\HDSerialNumRead.dll" () As String

怎么辦?????????????????
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2003-11-5 01:23:00 | 只看该作者
我不知道为什么出错,你可以使用MS帮助自带的代码取得序列号

Sub ShowDriveInfo(drvpath)
    Dim fs, d, s, t
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
    Select Case d.DriveType
        Case 0: t = "Unknown"
        Case 1: t = "Removable"
        Case 2: t = "Fixed"
        Case 3: t = "Network"
        Case 4: t = "CD-ROM"
        Case 5: t = "RAM Disk"
    End Select
    s = "Drive " & d.DriveLetter & ": - " & t
    s = s & vbCrLf & "SN: " & d.SerialNumber
    MsgBox s
End Sub

3#
 楼主| 发表于 2003-11-5 01:30:00 | 只看该作者
是這樣的...

如下:
Private Declare Function HDSerialNumRead Lib "HDSerialNumRead.dll" () As String
Public Function GetHDSerialNum() As String
'先取消這句
    'On Error GoTo err_hd
    Dim S As String
    S = Trim(HDSerialNumRead())
    GetHDSerialNum = Left(S, Len(S) - 1)
   
exit_hd:
    Exit Function
   
err_hd:
    GetHDSerialNum = ""
    GoTo exit_hd
   
End Function

當我取消錯誤處理后,在調試窗口
?GETHDSERIALNUM()
提示:"找不到檔案HDSerialNumRead.dll"
情形就是這樣...
???
4#
发表于 2003-11-5 02:09:00 | 只看该作者
http://www.accessoft.com/cgi-bin/dispbbs.asp?boardID=2&ID=820

[转贴]goodorbad版主 的通用对话框选择单个文件
你看看有用么?兔兔正在努力学会看懂和应用

Option Compare Database
Public Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type
Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Public Function FilePath() As String
Dim ofn As OPENFILENAME
ofn.lStructSize = Len(ofn)
ofn.hwndOwner = hwnd  'Me.hwnd

ofn.hInstance = CurrentProject.Application.hWndAccessApp

'定义你自已需要打开的文件类型
ofn.lpstrFilter = "Access文件 (*.mdb)" + Chr$(0) + "*.md?" + Chr$(0) + _
    "所有文件 (*.*)" + Chr$(0) + "*.*" + Chr$(0)
   
ofn.lpstrFile = Space$(254)
ofn.nMaxFile = 255
ofn.lpstrFileTitle = Space$(254)
ofn.nMaxFileTitle = 255

'定义默认打开目录,在这里定义的是本程序的所在目录
ofn.lpstrInitialDir = CurrentProject.Path

'定义对话框标题
ofn.lpstrTitle = "选择文件"

ofn.flags = 0
Dim a
a = GetOpenFileName(ofn)
If (a) Then
    FilePath = Trim$(ofn.lpstrFile)
End If


End Function
5#
 楼主| 发表于 2003-11-5 15:20:00 | 只看该作者
有是有用,
不過就是這個東西把我害慘了.....
那個慘啊,,,切齒痛恨...........
上次我發的貼子,"Getopenfilename的用法",就是為這個東東
你要注意了,上面那段代碼返回的文件名會多一個空格一樣的東西....,用trim去不掉
所以要加多一句..

If (a) Then
    FilePath = Trim$(ofn.lpstrFile)
    filepath=left(filepath,len(filepath)-1))
End If
6#
 楼主| 发表于 2003-11-5 15:25:00 | 只看该作者
.....
怎么沒人回答我的貼子呢....,
老是這樣,太不公平了
.........
搞得每次提出問題總是不能結案....

1.getopenfilename的用法.....
2.access背景的更改(不占用內存的,不會增大程序容量的方法..)
3.怎么引用api函數,(不是system32中的dll,自帶的)

...
唉...
發牢騷了...
誰幫我先解決3吧....
(1改過了,但不知怎么用的..,,2知道方法,但不知是不是最好的..)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-15 10:34 , Processed in 0.090356 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表