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

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

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

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

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

    צהריים טובים.
    האם יש קוד VBA לצילום תמונה דרך המצלמה של המחשב (הנייד) ושמירה שלה במחשב?
    בחיפוש בגוגל מצאתי כל מיני קודים שלא עובדים, או שצריך להתקין תוסף (כמו AccessImagine.ocx) ואני מעדיף משהו בלי זה.
    תודה רבה!

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

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

      צהריים טובים.
      האם יש קוד VBA לצילום תמונה דרך המצלמה של המחשב (הנייד) ושמירה שלה במחשב?
      בחיפוש בגוגל מצאתי כל מיני קודים שלא עובדים, או שצריך להתקין תוסף (כמו AccessImagine.ocx) ואני מעדיף משהו בלי זה.
      תודה רבה!

      מה, אף אחד לא עשה משהו כזה אף פעם?
      תודה!

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

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

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        א OdedDvirO 2 תגובות תגובה אחרונה
        0
        • א מנותק
          א מנותק
          ארי
          השיב ל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
                                        • דף הבית
                                        • קטגוריות
                                        • פוסטים אחרונים
                                        • משתמשים
                                        • חיפוש
                                        • חוקי הפורום