تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تشغيل الكاميرا والتقاط الصوره في picturebox
#1
السلام عليكم 

احبتي رجاءا

اريد تشغيل الكاميرا المدمجه بالجهاز والتقاط صورتها مباشرة في picturebox

استخدمت كل الأمثله المطروحه على الانترنت في المواقع العربيه والاجنبيه  يعطيني خطأ في كود الـ sendmessage الخاص بـ Hhnwd

وبحثت على الانترنت فوجدت ان هذا الكود لا يعمل على أجهزه 64 بت

ما الحل يا اخوه

ارجو حل المشكله سريعا وجزاكم الله خيرا
الرد }}}}
تم الشكر بواسطة:
#2
المشكلة ان كل الامثلة مرتبطة بملف ليس من ميكروسوفتSad
هذا زمان ولا ادري الان
لو وجدت امثلة حديثة ياليت تدلني عليها لعلي احاول

الصراحة وجدت كود وتفاجات انه نجح معي لكن.. لا اظمن ان يعمل مع 64
كود :
Imports System.Runtime.InteropServices
Public Class Form1
    Dim sfdImage As New SaveFileDialog
    Const WM_CAP As Short = &H400S
    Const WM_CAP_DRIVER_CONNECT As Integer = WM_CAP + 10
    Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_CAP + 11
    Const WM_CAP_EDIT_COPY As Integer = WM_CAP + 30
    Public Const WM_CAP_GET_STATUS As Integer = WM_CAP + 54
    Public Const WM_CAP_DLG_VIDEOFORMAT As Integer = WM_CAP + 41
    Const WM_CAP_SET_PREVIEW As Integer = WM_CAP + 50
    Const WM_CAP_SET_PREVIEWRATE As Integer = WM_CAP + 52
    Const WM_CAP_SET_SCALE As Integer = WM_CAP + 53
    Const WS_CHILD As Integer = &H40000000
    Const WS_VISIBLE As Integer = &H10000000
    Const SWP_NOMOVE As Short = &H2S
    Const SWP_NOSIZE As Short = 1
    Const SWP_NOZORDER As Short = &H4S
    Const HWND_BOTTOM As Short = 1
    Private DeviceID As Integer = 0 ' Current device ID
    Private hHwnd As Integer ' Handle to preview window
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
        (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _
        ByRef lParam As CAPSTATUS) As Boolean
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
       (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Boolean, _
       ByRef lParam As Integer) As Boolean
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
         (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _
         ByRef lParam As Integer) As Boolean
    Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Integer, _
        ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, _
        ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer

    Declare Function DestroyWindow Lib "user32" (ByVal hndw As Integer) As Boolean
    Structure POINTAPI
        Dim x As Integer
        Dim y As Integer
    End Structure
    Public Structure CAPSTATUS
        Dim uiImageWidth As Integer                    '// Width of the image
        Dim uiImageHeight As Integer                   '// Height of the image
        Dim fLiveWindow As Integer                     '// Now Previewing video?
        Dim fOverlayWindow As Integer                  '// Now Overlaying video?
        Dim fScale As Integer                          '// Scale image to client?
        Dim ptScroll As POINTAPI                    '// Scroll position
        Dim fUsingDefaultPalette As Integer            '// Using default driver palette?
        Dim fAudioHardware As Integer                  '// Audio hardware present?
        Dim fCapFileExists As Integer                  '// Does capture file exist?
        Dim dwCurrentVideoFrame As Integer             '// # of video frames cap'td
        Dim dwCurrentVideoFramesDropped As Integer     '// # of video frames dropped
        Dim dwCurrentWaveSamples As Integer            '// # of wave samples cap'td
        Dim dwCurrentTimeElapsedMS As Integer          '// Elapsed capture duration
        Dim hPalCurrent As Integer                     '// Current palette in use
        Dim fCapturingNow As Integer                   '// Capture in progress?
        Dim dwReturn As Integer                        '// Error value after any operation
        Dim wNumVideoAllocated As Integer              '// Actual number of video buffers
        Dim wNumAudioAllocated As Integer              '// Actual number of audio buffers
    End Structure
    Declare Function capCreateCaptureWindowA Lib "avicap32.dll" _
         (ByVal lpszWindowName As String, ByVal dwStyle As Integer, _
         ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, _
         ByVal nHeight As Short, ByVal hWndParent As Integer, _
         ByVal nID As Integer) As Integer
    Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Short, _
        ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, _
        ByVal cbVer As Integer) As Boolean
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        LoadDeviceList()
        If lstDevices.Items.Count > 0 Then
            btnStart.Enabled = True
            lstDevices.SelectedIndex = 0
            btnStart.Enabled = True
        Else
            lstDevices.Items.Add("No Capture Device")
            btnStart.Enabled = False
        End If
        Me.AutoScrollMinSize = New Size(100, 100)
        btnStop.Enabled = False
        btnSave.Enabled = False
        btnInfo.Enabled = False
        picCapture.SizeMode = PictureBoxSizeMode.StretchImage
    End Sub
    Private Sub LoadDeviceList()
        Dim strName As String = Space(100)
        Dim strVer As String = Space(100)
        Dim bReturn As Boolean
        Dim x As Short = 0
        '
        ' Load name of all avialable devices into the lstDevices
        '
        Do
            '
            '   Get Driver name and version
            '
            bReturn = capGetDriverDescriptionA(x, strName, 100, strVer, 100)
            '
            ' If there was a device add device name to the list
            '
            If bReturn Then lstDevices.Items.Add(strName.Trim)
            x += CType(1, Short)
        Loop Until bReturn = False
    End Sub

    Private Sub OpenPreviewWindow()
        Dim iHeight As Integer = picCapture.Height
        Dim iWidth As Integer = picCapture.Width
        '
        ' Open Preview window in picturebox
        '
        hHwnd = capCreateCaptureWindowA(DeviceID.ToString, WS_VISIBLE Or WS_CHILD, 0, 0, 1280, _
            1024, picCapture.Handle.ToInt32, 0)
        '
        ' Connect to device
        '
        If SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, DeviceID, 0) Then
            '
            'Set the preview scale
            '
            SendMessage(hHwnd, WM_CAP_SET_SCALE, True, 0)

            '
            'Set the preview rate in milliseconds
            '
            SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0)

            '
            'Start previewing the image from the camera
            '
            SendMessage(hHwnd, WM_CAP_SET_PREVIEW, True, 0)

            '
            ' Resize window to fit in picturebox
            '
            SetWindowPos(hHwnd, HWND_BOTTOM, 0, 0, picCapture.Width, picCapture.Height, _
                    SWP_NOMOVE Or SWP_NOZORDER)

            btnSave.Enabled = True
            btnStop.Enabled = True
            btnStart.Enabled = False
            btnInfo.Enabled = True
        Else
            '
            ' Error connecting to device close window
            '
            DestroyWindow(hHwnd)
            btnSave.Enabled = False
        End If
    End Sub
    Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
        DeviceID = lstDevices.SelectedIndex
        OpenPreviewWindow()
        Dim bReturn As Boolean
        Dim s As CAPSTATUS
        bReturn = SendMessage(hHwnd, WM_CAP_GET_STATUS, Marshal.SizeOf(s), s)
        Debug.WriteLine(String.Format("Video Size {0} x {1}", s.uiImageWidth, s.uiImageHeight))
    End Sub
    Private Sub ClosePreviewWindow()
        '
        ' Disconnect from device
        '
        SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, DeviceID, 0)
        '
        ' close window
        '
        DestroyWindow(hHwnd)
    End Sub
    Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click
        ClosePreviewWindow()
        btnSave.Enabled = False
        btnStart.Enabled = True
        btnInfo.Enabled = False
        btnStop.Enabled = False
    End Sub
    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
        Dim data As IDataObject
        Dim bmap As Bitmap

        '
        ' Copy image to clipboard
        '
        SendMessage(hHwnd, WM_CAP_EDIT_COPY, 0, 0)
        '
        ' Get image from clipboard and convert it to a bitmap
        '
        data = Clipboard.GetDataObject()
        If data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then
            bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), Bitmap)
            picCapture.Image = bmap
            ClosePreviewWindow()
            btnSave.Enabled = False
            btnStop.Enabled = False
            btnStart.Enabled = True
            btnInfo.Enabled = False
            Trace.Assert(Not (bmap Is Nothing))
            If sfdImage.ShowDialog = DialogResult.OK Then
                bmap.Save(sfdImage.FileName, Imaging.ImageFormat.Bmp)
            End If
        End If
    End Sub
    Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        If btnStop.Enabled Then
            ClosePreviewWindow()
        End If
    End Sub

  

  

End Class

بقي كيف اختار الكمرا بالكود لانه يظهر مربع حوار
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة: ربيع , العزابي
#3
الكود كسابقيه يعتمد على نفس الطريقه وهي ارسال رساله الى الكاميرا يأمره بفتحها

وعند تنفيذ هذا الكود عندي

فتح الكاميرا لاول مره كغيره من الاكواد ولايفتحها مره أخرى

ففي كل مره يعطي مربع حوار اختيار الكاميرا وان اخترت الكاميرا ايضا لايقوم بفتحها

حاولت الغاء اوامر الارسال للكاميرا وتنفيذها من جديد في كل مره لكن بلا جدوى

أريد حلا يا اخوه

الفيجوال فشل مع الكاميرا ام ماذا ؟؟؟


جزاك الله خيرا اخي سعود على اهتمامك وردك
الرد }}}}
تم الشكر بواسطة:
#4
فعلا مثل ماقلت واتوقع يحتاج تعديل من خبير بالامر
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة:
#5
نحمده ونصلي على رسوله الكريم
انظر لهذا المثال الذي يعتمد على microsoft expression encoder
الرد }}}}
تم الشكر بواسطة: kslawy
#6
اخ ربيع الله يعطيك العافيه
لكن انا قديم ... شغال على 2010

هل يوجد مثال على 2010 بارك الله فيك
الرد }}}}
تم الشكر بواسطة:
#7
نحمده ونصلي على رسوله الكريم


الملفات المرفقة
.rar   WebcamTest.rar (الحجم : 2.47 م ب / التحميلات : 160)
الرد }}}}
تم الشكر بواسطة:
#8
أخي ربيع جزاك الله خيرا على اهتمامك .. لكن

Could not load file or assembly 'Microsoft.Expression.Encoder, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. An attempt was made to load a program with an incorrect format.

مع اني اضفت ريفرانس للملفين المرفقين في الرووت للبرنامج وبنفس المشكله !!

ما العمل ؟؟
الرد }}}}
تم الشكر بواسطة:
#9
جرب ان تبدل الخيار في platform target الى x86 ضمن خصائص المشروع في build
الرد }}}}
تم الشكر بواسطة:
#10
ليس هناك خيار غير Active ( Any CPU ) L

وجهازي 64 BIT
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] تشغيل ملفات الصوتية متتالية سوري حر 4 117 02-12-16, 07:18 AM
آخر رد: zinom
  تشغيل الفورم بتاريخ ddemed 3 79 01-12-16, 05:41 PM
آخر رد: ddemed
  كيفيه تشغيل الفورم بالتاريخ الذي يحدده المستخدم ddemed 5 129 23-11-16, 10:12 PM
آخر رد: السرور
  خطا عند تشغيل البرنامج makky 10 144 19-11-16, 03:17 AM
آخر رد: أبو عمر
  [VB.NET] إضافه نص الي صوره بحيث يكون اسفل الصوره بدون استقطاع اي جزء منها جوري 4 169 31-10-16, 08:56 PM
آخر رد: جوري
  تشغيل الفورم بتاريخ الضغط علي الزر ddemed 3 128 28-10-16, 10:01 AM
آخر رد: ddemed
  [VB.NET] مشكلة عند تشغيل الفيجوال بيسك دوت نت Asmaa adel 1 78 20-10-16, 02:22 AM
آخر رد: جوري
  [VB.NET] خطأ عند النداء على أداة PictureBox لماذا !!!!! sniperjawadino 1 82 13-10-16, 09:58 PM
آخر رد: ممدوح
  [سؤال] مساعدة من فظلكم تشغيل قنوات بمشغل silverlight sambro 1 86 08-10-16, 04:37 PM
آخر رد: عبدالرحمن المكاوي
Exclamation [سؤال] التاكيد من موجد برامج قبل تشغيل البرنامج MOONMICROSYSTEM 0 96 21-09-16, 11:17 AM
آخر رد: MOONMICROSYSTEM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم