דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. צילום תמונה לאקסס

צילום תמונה לאקסס

מתוזמן נעוץ נעול הועבר תכנות
19 פוסטים 4 כותבים 547 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    ארי
    השיב לdovid ב נערך לאחרונה על ידי
    #4

    @dovid עד כדי כך?
    מצטער, לא התכוונתי 😉
    חייבים תוספים בשביל זה?
    תודה בכל אופן!!!

    תגובה 1 תגובה אחרונה
    0
    • א מנותק
      א מנותק
      ארי
      כתב ב נערך לאחרונה על ידי
      #5

      מצאתי כאן קוד לצילום תמונה, אבל הוא מציג לי רק מסך שחור ולא מצלם כלום.
      מצורף קובץ דוגמא לפי מה שמסובר שם, אשמח אם מישהו יוכל לבדוק לי מה הבעיה.
      תודה!

      צילום תמונה לאקסס.accdb

      תגובה 1 תגובה אחרונה
      0
      • OdedDvirO מנותק
        OdedDvirO מנותק
        OdedDvir
        השיב לdovid ב נערך לאחרונה על ידי OdedDvir
        #6

        @ארי למעשה זה אפשרי באקסס, על ידי קריאות ל-API של Windows. אכן הקודים המפוזרים ברחבי העולם סובלים מהזנחה.

        הנה מחלקה שיצרתי לטיפול במצלמת רשת. צור Class Module ותדביק את הקוד הבא:

        'UX_WebCam : A WebCam API Class. By OdedDvir
        
        Option Compare Database
        Option Explicit
        
        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_EDIT_COPY As Long = WM_CAP_START + 30
        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
        Const WM_CAP_GRAB_FRAME As Long = WM_CAP_START + 60
        
        Private Declare PtrSafe Function apiCapCreateCaptureWindow 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 apiSendMessage Lib "user32" Alias "SendMessageA" _
                                        (ByVal hWnd As LongPtr, ByVal wMsg As Long, _
                                         ByVal wParam As Long, ByRef lParam As Any) As Long
        
        Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long
        
        Private hCap As LongPtr
        
        Public Sub OpenWebCam(targethWnd As Long, Optional width = 640, Optional height = 480)
            hCap = apiCapCreateCaptureWindow("Capture Window", WS_CHILD Or WS_VISIBLE, 0, 0, width, height, targethWnd, 0)
            If hCap = 0 Then Exit Sub
            apiSendMessage hCap, WM_CAP_DRIVER_CONNECT, 0, 0
            apiSendMessage hCap, WM_CAP_SET_PREVIEWRATE, 66, 0&
            apiSendMessage hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&
        End Sub
        
        Public Sub TakeSnapshotToFile(fileName As String)
            apiSendMessage hCap, WM_CAP_GRAB_FRAME, 0, 0
            apiSendMessage hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&
            apiSendMessage hCap, WM_CAP_FILE_SAVEDIB, 0&, ByVal CStr(fileName)
            apiSendMessage hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&
        End Sub
        
        Public Sub OpenVideoFormatDialog()
            apiSendMessage hCap, WM_CAP_DLG_VIDEOFORMAT, 0&, 0&
        End Sub
        
        Public Sub CaptureToClipboard()
            apiSendMessage hCap, WM_CAP_GRAB_FRAME, 0, 0
            apiSendMessage hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&
            apiSendMessage hCap, WM_CAP_EDIT_COPY, 0, 0
            apiSendMessage hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&
        End Sub
        
        Public Sub CloseWebCam()
            apiSendMessage hCap, WM_CAP_DRIVER_DISCONNECT, 0&, 0&
        End Sub
        

        דוגמא ליישום:

        א. צור טופס עם 6 לחצנים בשמות התואמים למופיע בקוד הבא, דהיינו:
        cmdCloseWebCam, cmdOpenSettings cmdOpenWebCam וכו', ועם פקד תמונה אחד בשם SavedPicture.
        ב. במודול של הטופס תדביק את הקוד הבא:

        Option Compare Database
        Option Explicit
        
        Private WebCam As New UX_WebCam
        Private snapshotCount As Integer
        
        Private Function GenerateFileName() As String
            GenerateFileName = "d:\Temp\Picture" & snapshotCount & ".bmp"
        End Function
        
        Private Sub cmdOpenWebCam_Click()
            snapshotCount = 0
            WebCam.OpenWebCam Me.hWnd, 640, 480
        End Sub
        
        Private Sub cmdOpenSettings_Click()
            WebCam.OpenVideoFormatDialog
        End Sub
        
        Private Sub cmdCloseWebCam_Click()
            WebCam.CloseWebCam
        End Sub
        
        Private Sub cmdCopySnapshot_Click()
            WebCam.CaptureToClipboard
            MsgBox "An image was copied to the clipboard!"
        End Sub
        
        Private Sub cmdLoadPictureToControl_Click()
            Me.SavedPicture.Picture = GenerateFileName
        End Sub
        
        Private Sub cmdSaveSnapshotToFile_Click()
            snapshotCount = snapshotCount + 1
            
            Dim fileName As String
            fileName = GenerateFileName
            
            WebCam.TakeSnapshotToFile fileName
            MsgBox "File " & fileName & " was created!"
        End Sub
        
        Private Sub Form_Close()
            WebCam.CloseWebCam
        End Sub
        
        א תגובה 1 תגובה אחרונה
        4
        • א מנותק
          א מנותק
          ארי
          השיב לOdedDvir ב נערך לאחרונה על ידי
          #7

          @OdedDvir תודה!
          הוא מציג לי רק מסך שחור...
          אמנם לא עושה שום דיבאג אבל גם לא מראה לי את המצלמה.
          ברגע שאני לוחץ על פתח מצלמה כל הטופס נהיה שחור.

          OdedDvirO איש ימיניא 2 תגובות תגובה אחרונה
          0
          • OdedDvirO מנותק
            OdedDvirO מנותק
            OdedDvir
            השיב לארי ב נערך לאחרונה על ידי OdedDvir
            #8

            @ארי תבדוק בהגדרות הפרטיות של המצלמה ב-Windows. כנראה חסמת גישה של אפליקציות למצלמה.

            א תגובה 1 תגובה אחרונה
            0
            • א מנותק
              א מנותק
              ארי
              השיב לOdedDvir ב נערך לאחרונה על ידי
              #9

              @OdedDvir כל ההגדרות מופעלות.

              תגובה 1 תגובה אחרונה
              0
              • איש ימיניא מנותק
                איש ימיניא מנותק
                איש ימיני
                השיב לארי ב נערך לאחרונה על ידי
                #10

                @ארי
                נראה שזה בעיה אצלך.
                גם הקובץ דוגמה שלך עובד אצלי.
                זה מדליק את המצלמה ומראה את זה באקסס.

                א תגובה 1 תגובה אחרונה
                0
                • א מנותק
                  א מנותק
                  ארי
                  השיב לאיש ימיני ב נערך לאחרונה על ידי
                  #11

                  @איש-ימיני איזה אופיס יש לך? וכמה סיביות?
                  אולי זה קשור 🤔

                  איש ימיניא תגובה 1 תגובה אחרונה
                  0
                  • איש ימיניא מנותק
                    איש ימיניא מנותק
                    איש ימיני
                    השיב לארי ב נערך לאחרונה על ידי
                    #12

                    @ארי אופיס 2019 64 סיביות.

                    א תגובה 1 תגובה אחרונה
                    0
                    • א מנותק
                      א מנותק
                      ארי
                      השיב לאיש ימיני ב נערך לאחרונה על ידי
                      #13

                      @איש-ימיני לי יש 2021 32 סיביות.
                      אולי זה קשור לסיביות?
                      אבל לכאורה אם כן הוא היה אמור לעשות באג איפשהו, לא?

                      איש ימיניא תגובה 1 תגובה אחרונה
                      0
                      • איש ימיניא מנותק
                        איש ימיניא מנותק
                        איש ימיני
                        השיב לארי ב נערך לאחרונה על ידי איש ימיני
                        #14

                        @ארי
                        יש שינויים בין 64 ל 32.
                        נסה עם קובץ זה:-צילום-תמונה-לאקסס.accdb
                        אמור לעבוד גם על 64 וגם על 32
                        אני מקווה שאין עוד שינויים שצריך לעשות
                        זה מה שעשיתי:

                        #If Win64 And VBA7 Then
                        
                        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
                        
                        #Else
                        
                        Private Declare 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 Long _
                                , ByVal nID As Long) As Long
                        
                        Private Declare Function SendMessage Lib "user32" _
                            Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long _
                                , ByVal wParam As Long, ByRef lParam As Any) As Long
                                
                        Dim hCap As Long
                        
                        #End If
                        
                        א תגובה 1 תגובה אחרונה
                        0
                        • א מנותק
                          א מנותק
                          ארי
                          השיב לאיש ימיני ב נערך לאחרונה על ידי
                          #15

                          @איש-ימיני לא עובד 😕
                          ככה זה נראה:
                          c29132d3-4d7e-44f0-a54c-cb27d272178e-image.png
                          בדקתי גם על מחשב עם אופיס 2016 32 סיביות ואותה תוצאה.

                          אתה משתמש במצלמת רשת או במצלמה המובנית של המחשב?
                          אני מנסה לחפש הבדלים....
                          תודה.

                          איש ימיניא OdedDvirO 2 תגובות תגובה אחרונה
                          0
                          • איש ימיניא מנותק
                            איש ימיניא מנותק
                            איש ימיני
                            השיב לארי ב נערך לאחרונה על ידי
                            #16

                            @ארי
                            אני משתמש במצלמה מובנית.
                            תנסה לשנות את הקוד של @OdedDvir
                            להלן השינויים בחלק הראשון של הקוד:

                            'UX_WebCam : A WebCam API Class. By OdedDvir
                            
                            Option Compare Database
                            Option Explicit
                            
                            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_EDIT_COPY As Long = WM_CAP_START + 30
                            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
                            Const WM_CAP_GRAB_FRAME As Long = WM_CAP_START + 60
                            
                            Private Declare Function apiCapCreateCaptureWindow 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 Long, _
                                                             ByVal nID As Long) As Long
                            
                            Private Declare Function apiSendMessage Lib "user32" Alias "SendMessageA" _
                                                            (ByVal hWnd As Long, ByVal wMsg As Long, _
                                                             ByVal wParam As Long, ByRef lParam As Any) As Long
                            
                            Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long
                            
                            Private hCap As Long
                            
                            Public Sub OpenWebCam(targethWnd As Long, Optional width = 640, Optional height = 480)
                                hCap = apiCapCreateCaptureWindow("Capture Window", WS_CHILD Or WS_VISIBLE, 0, 0, width, height, targethWnd, 0)
                                If hCap = 0 Then Exit Sub
                                apiSendMessage hCap, WM_CAP_DRIVER_CONNECT, 0, 0
                                apiSendMessage hCap, WM_CAP_SET_PREVIEWRATE, 66, 0&
                                apiSendMessage hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&
                            End Sub
                            
                            Public Sub TakeSnapshotToFile(fileName As String)
                                apiSendMessage hCap, WM_CAP_GRAB_FRAME, 0, 0
                                apiSendMessage hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&
                                apiSendMessage hCap, WM_CAP_FILE_SAVEDIB, 0&, ByVal CStr(fileName)
                                apiSendMessage hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&
                            End Sub
                            
                            Public Sub OpenVideoFormatDialog()
                                apiSendMessage hCap, WM_CAP_DLG_VIDEOFORMAT, 0&, 0&
                            End Sub
                            
                            Public Sub CaptureToClipboard()
                                apiSendMessage hCap, WM_CAP_GRAB_FRAME, 0, 0
                                apiSendMessage hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&
                                apiSendMessage hCap, WM_CAP_EDIT_COPY, 0, 0
                                apiSendMessage hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&
                            End Sub
                            
                            Public Sub CloseWebCam()
                                apiSendMessage hCap, WM_CAP_DRIVER_DISCONNECT, 0&, 0&
                            End Sub
                            

                            אני מקווה שזה כל השינויים.
                            אם עדיין לא עובד נצטרך להמתין ל @OdedDvir עצמו.

                            תגובה 1 תגובה אחרונה
                            0
                            • OdedDvirO מנותק
                              OdedDvirO מנותק
                              OdedDvir
                              השיב לארי ב נערך לאחרונה על ידי OdedDvir
                              #17

                              @איש-ימיני החל מאקסס 2013 אין צורך לשנות את הקוד כדי להתאים אחורה ל-32 ביט. הקוד של 64 ביט עובר ללא שגיאות.
                              @ארי תבדוק אם הדריבר בכלל מופעל.
                              בקוד שצירפתי, תשנה את השורה

                              apiSendMessage hCap, WM_CAP_DRIVER_CONNECT, 0, 0
                              

                              לשורה הבאה:

                              Debug.Print CBool(apiSendMessage(hCap, WM_CAP_DRIVER_CONNECT, 0, 0))
                              

                              ותראה מה מודפס בקונסול (Immediate window). צריך להיות True.

                              א 2 תגובות תגובה אחרונה
                              2
                              • א מנותק
                                א מנותק
                                ארי
                                השיב לOdedDvir ב נערך לאחרונה על ידי
                                #18

                                @OdedDvir אמר בצילום תמונה לאקסס:

                                צריך להיות True

                                הוא אכן מדפיס True.

                                תגובה 1 תגובה אחרונה
                                0
                                • א מנותק
                                  א מנותק
                                  ארי
                                  השיב לOdedDvir ב נערך לאחרונה על ידי ארי
                                  #19

                                  @OdedDvir אמר בצילום תמונה לאקסס:

                                  תבדוק אם הדריבר בכלל מופעל

                                  זה?
                                  f9091eb2-5c0d-49cb-b5c8-844549c10d32-image.png

                                  תגובה 1 תגובה אחרונה
                                  0

                                  בא תתחבר לדף היומי!
                                  • התחברות

                                  • אין לך חשבון עדיין? הרשמה

                                  • התחברו או הירשמו כדי לחפש.
                                  • פוסט ראשון
                                    פוסט אחרון
                                  0
                                  • דף הבית
                                  • קטגוריות
                                  • פוסטים אחרונים
                                  • משתמשים
                                  • חיפוש
                                  • חוקי הפורום