設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 2703|回復(fù): 4
打印 上一主題 下一主題

[API] 在VB中怎樣判斷系統(tǒng)中是否安裝ACCESS?,

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2008-5-30 11:19:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在VB中怎樣判斷系統(tǒng)中是否安裝ACCESS?,
沒有裝就提示用戶用戶安裝,
已經(jīng)安裝則提示安裝路徑及Access版本.
我目前用的是 CreateObject 方法,
如果不允許用 CreateObject 方法,
不知是否有更好的方法.
謝謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱

點擊這里給我發(fā)消息

2#
發(fā)表于 2008-5-30 12:04:41 | 只看該作者
可以檢測注冊項
或者使用createobject, 捕獲錯誤,如何出錯,則可根據(jù)返回信息,判斷是否對象不存在
3#
發(fā)表于 2008-5-30 13:08:52 | 只看該作者
不用creatobject的話,比較方便的就是檢測注冊表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office 下的鍵值了
4#
發(fā)表于 2008-5-30 13:19:57 | 只看該作者
從別處轉(zhuǎn)貼過來的,僅供參考

  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只讀取其默認(rèn)值
  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
復(fù)制代碼
5#
 樓主| 發(fā)表于 2008-5-30 15:10:00 | 只看該作者
謝謝,試試先
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 10:19 , Processed in 0.094821 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表