簡體   English   中英

Microsoft Access 腳本無法連接到設備相機

[英]Microsoft Access script cannot connect to device camera

我一直在研究 Access 數據庫,用戶可以在其中單擊一個按鈕,代碼將訪問計算機上的“網絡攝像頭”,然后繼續拍照。 該代碼在普通筆記本電腦上運行良好,但我嘗試在筆記本電腦/平板電腦混合設備(Latitude 5290 二合一筆記本電腦)上運行它,無論出於何種原因,該代碼根本無法訪問相機。

我下載了一個名為 Dorgem 的第三方應用程序並嘗試訪問相機,但收到一條錯誤消息,提示“無法連接到設備”。 對我來說,這聽起來像是一個權限問題,但我確保在設置中啟用了相機權限( https://www.tenforums.com/tutorials/71414-allow-deny-os-apps-access-camera-windows-10 -a.html )。 我堅信這仍然是一個許可問題,但我找不到解決方法。 如果我能就如何解決這個問題獲得一些意見,我將不勝感激。

這是我在訪問中使用的代碼。

Option Compare Database
Option Explicit
Public ImageLocation As String
Public AttachmentIndicator As String
Const WS_CHILD As Long = &H40000000
Const WS_VISIBLE As Long = &H10000000


Const WM_USER As Long = &H400
Const WM_CAP_START As Long = WM_USER


Const WM_CAP_DRIVER_CONNECT As Long = WM_CAP_START + 10
Const WM_CAP_DRIVER_DISCONNECT As Long = WM_CAP_START + 11
Const WM_CAP_SET_PREVIEW As Long = WM_CAP_START + 50
Const WM_CAP_SET_PREVIEWRATE As Long = WM_CAP_START + 52
Const WM_CAP_DLG_VIDEOFORMAT As Long = WM_CAP_START + 41
Const WM_CAP_FILE_SAVEDIB As Long = WM_CAP_START + 25


Private Declare PtrSafe Function capCreateCaptureWindow _
    Lib "avicap32.dll" Alias "capCreateCaptureWindowA" _
         (ByVal lpszWindowName As String, ByVal dwStyle As Long _
        , ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long _
        , ByVal nHeight As Long, ByVal hwndParent As LongPtr _
        , ByVal nID As Long) As Long



Private Declare PtrSafe Function SendMessage Lib "user32" _
    Alias "SendMessageA" (ByVal hWnd As LongPtr, ByVal wMsg As Long _
        , ByVal wParam As Long, ByRef lParam As Any) As Long


Dim hCap As LongPtr

Private Sub TakePictureButton_Click()
Dim sFileName As String
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&)
    sFileName = "C:\Users\212764307\Documents\" & Forms!IRForm.IRNO & ".jpg"
    ImageLocation = sFileName


    Call SendMessage(hCap, WM_CAP_FILE_SAVEDIB, 0&, ByVal CStr(sFileName))

DoFinally:
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)

End Sub

Private Sub Cmd3_Click()
Dim Temp As Long
Temp = SendMessage(hCap, WM_CAP_DRIVER_DISCONNECT, 0&, 0&)
DoCmd.Close
End Sub


Private Sub StartCameraButton_Click()
    hCap = capCreateCaptureWindow("Take a Camera Shot", WS_CHILD Or WS_VISIBLE, 0, 0, PicWebCam.Width, PicWebCam.Height, PicWebCam.Form.hWnd, 0)
    If hCap <> 0 Then
        Call SendMessage(hCap, WM_CAP_DRIVER_CONNECT, 0, 0)
        Call SendMessage(hCap, WM_CAP_SET_PREVIEWRATE, 66, 0&)
        Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
    End If
End Sub

Private Sub Cmd2_Click()
Dim Temp As Long
Temp = SendMessage(hCap, WM_CAP_DLG_VIDEOFORMAT, 0&, 0&)
End Sub


Private Sub Form_Load()
StartCameraButton.Caption = "Start Camera"
cmd2.Caption = "&Format Cam"`enter code here`
cmd3.Caption = "&Close Cam"
TakePictureButton.Caption = "&Take Picture"

End Sub'

使用最新版本的avicap32.dll(復制到windows\\system32和windows\\sysWOW64目錄下,還要檢查camera驅動,avicap總是有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM