منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تصوير الشاشة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الكود بالمرفقات عبارة عن برنامج صغير يسمخ بتصوير الشاشة و حفظ البيانات في ملفات علي هيئة صور او يمكن حفظ البيانات كلها علي هيئة DataTable و بالتالي يمكن حفظها في ملف عادي او ملف داتابيز تقليدي

الكود بالمرفقات بنسخة الفيجوال استوديو 2015

الكود مكتوب علي هيئة كلاسات كالتالي

الكلاس الأول:
ScreenCapture
عبارة عن كلاس يقوم بتشغيل تايمر داخلي حيث يتم التقاط صورة لسطخ المكتب
الكلاس أيضا مكتوب يأسلوب لكي يعمل في الخلفيية بحيث لا يؤثر علي أداء الفورم الذي يستخدم الكلاس

الكلاس الثاني:
ScreenCaptureEventHandler
عبارة عن EventHandler او Delegate يتم استخدامه من داخل الكلاس الأول


الكلاس الثالث:
ScreenCaptureCollection
عبارة عن Dictionary حيث يتم استخدامه لحفظ بيانات الصورة علي هيئة String و مصفوفة بايت
أيضا الكلاس يسمح بتحويل البيانات الي DataTable لسهولة حفظها لاحقا في ملف


الكلاس الرابع:
SecureBytes
عبارة عن كلاس يستخدم لتحويل الصورة الي مصفوفة بايت

الكلاس الخامس:
SecureBitmap
عبارة عن كلاس يستخدم في تحويل مصفوفة من البايت الي صورة

الكلاسان الرابع و الخامس يمكن الحصول عليهما أو يمكن الاستغناء عنهما و استبدالهما بالدوال الموجودة في الموضوع الموجود في الرابط التالي

Convert Bitmap To ByteArray & ViceVersa


و لمن يملكون نسخ أقل حداثة من نسخة الفيجوال استوديو 2105
يمكنهم فتح مشروع جديد
إضافة الكلاسات الخمسة الي المشروع

ثم علي الفورم يتم اضافة عدد 2 باتون
ثم يتم كتابة الكود بالشكل التالي

PHP كود :
Public Class Form1

    Private scrCapture 
As ScreenCapture
    Private collector 
As ScreenCaptureCollection = New ScreenCaptureCollection()

 
   ' Button Start
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        scrCapture = New ScreenCapture
        AddHandler scrCapture.CaptureChanged, New ScreenCaptureEventHandler(AddressOf Me.OnScreenCaptureChanged)
        scrCapture.StartCapture()
    End Sub

    ' 
Button Stop
    Private Sub Button2_Click
(sender As ObjectAs EventArgsHandles Button2.Click
        scrCapture
.StopCapture()
 
       If scrCapture IsNot Nothing Then
            RemoveHandler scrCapture
.CaptureChanged, New ScreenCaptureEventHandler(AddressOf Me.OnScreenCaptureChanged)
 
           scrCapture.Dispose()
 
           scrCapture Nothing
        End 
If

 
       ' Save images to project directory or show it in a picture box as video
        For Each kvp As KeyValuePair(Of String, Byte()) In collector
            Dim key As String = kvp.Key
            Dim value As Byte() = kvp.Value
            Dim bmp As Bitmap = New SecureBitmap(value).ToBitmap
            bmp.Save(".\" + key)
        Next

        ' 
Or
 
       If Me.collector.ToDataTable IsNot Nothing Then
            Dim dt 
As DataTable collector.ToDataTable
            
' save datatble to file
        End If
    End Sub


    Protected Sub OnScreenCaptureChanged(bmp As Bitmap)
        Dim key As String = DateTime.Now.ToFileTime.ToString + ".jpg"
        If bmp IsNot Nothing Then
            collector.Add(key, New SecureBytes(bmp).ToBytes)
            bmp.Dispose()
            bmp = Nothing
        End If

    End Sub

End Class 

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