设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[API] 在VB中怎样判断系统中是否安装ACCESS?,

[复制链接]
跳转到指定楼层
1#
发表于 2008-5-30 11:19:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在VB中怎样判断系统中是否安装ACCESS?,
没有装就提示用户用户安装,
已经安装则提示安装路径及Access版本.
我目前用的是 CreateObject 方法,
如果不允许用 CreateObject 方法,
不知是否有更好的方法.
谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2008-5-30 12:04:41 | 只看该作者
可以检测注册项
或者使用createobject, 捕获错误,如何出错,则可根据返回信息,判断是否对象不存在
3#
发表于 2008-5-30 13:08:52 | 只看该作者
不用creatobject的话,比较方便的就是检测注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office 下的键值了
4#
发表于 2008-5-30 13:19:57 | 只看该作者
从别处转贴过来的,仅供参考

  1. Option Explicit

  2. Private Declare Function RegOpenKey Lib "advapi32" Alias "RegOpenKeyA" _
  3. (ByVal hKey As Long, _
  4. ByVal lpSubKey As String, _
  5. phkResult As Long) _
  6. As Long

  7. Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" _
  8. (ByVal hKey As Long, _
  9. ByVal lpValueName As String, _
  10. lpReserved As Long, _
  11. lptype As Long, _
  12. lpData As Any, _
  13. lpcbData As Long) _
  14. As Long

  15. Private Declare Function RegCloseKey& Lib "advapi32" (ByVal hKey&)

  16. Private Const REG_EXPAND_SZ = 2
  17. Private Const ERROR_SUCCESS = 0
  18. Private Const HKEY_CLASSES_ROOT = &H80000000


  19. Public Function IsAppPresent(ByVal strSubKey$) As Boolean

  20. IsAppPresent = CBool(Len(GetRegString(HKEY_CLASSES_ROOT, strSubKey)))

  21. End Function

  22. Private Sub Command1_Click()

  23. Label1.Caption = "Access : " & IsAppPresent("Access.Database\CurVer")
  24. Label2.Caption = "Excel :" & IsAppPresent("Excel.Sheet\CurVer")
  25. Label3.Caption = "PowerPoint :" & IsAppPresent("PowerPoint.Slide\CurVer")
  26. Label4.Caption = "Word :" & IsAppPresent("Word.Document\CurVer")

  27. End Sub



  28. Public Function GetRegString(ByVal hKey As Long, _
  29. ByVal strSubKey As String) As String

  30. Dim strSetting As String
  31. Dim lngDataLen As Long
  32. Dim lnghResult As Long

  33. If RegOpenKey(hKey, strSubKey, lnghResult) = ERROR_SUCCESS Then

  34. strSetting = Space$(255)
  35. lngDataLen = Len(strSetting)

  36. 'lpValueName为vbNullString只读取其默认值
  37. If RegQueryValueEx(lnghResult, vbNullString, ByVal 0, _
  38. REG_EXPAND_SZ, ByVal strSetting, lngDataLen) = ERROR_SUCCESS Then

  39. If lngDataLen > 1 Then

  40. GetRegString = Left$(strSetting, lngDataLen - 1)

  41. End If

  42. End If

  43. If RegCloseKey(lnghResult) <> ERROR_SUCCESS Then

  44. MsgBox "RegCloseKey Failed: " & strSubKey, vbCritical

  45. End If

  46. End If

  47. End Function
复制代码
5#
 楼主| 发表于 2008-5-30 15:10:00 | 只看该作者
谢谢,试试先
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 08:13 , Processed in 0.108009 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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