Posts

Showing posts from 2016

File To IntPtr

The Purpose of the below class is to convert a String to IntPtr Public Class CairoIntPtr     Inherits MarshalByRefObject     Implements IDisposable     Private _disposed As Boolean     Private _handle As IntPtr     Public Sub New(s As String)         Dim func As Func(Of String, IntPtr) = Function(str)                                                   Dim ptr As IntPtr = CType(Nothing, IntPtr)                                                   ptr = System.Runtime.InteropServices.Marshal.StringToHGlobalUni(str)                                                   Return ptr                                               End Function         Dim zero As Func(Of IntPtr) = Function() IntPtr.Zero         _handle = If(Not String.IsNullOrEmpty(s), func(s), zero)     End Sub     Public ReadOnly Property Handle() As Integer         Get             Return Me._handle         End Get     End Property     Public ReadOnly Property ToInt32 As Int32         Get             Return Convert.ToInt32(Me.Ha

CopyFromScreen

الكود التالي يوضح كيف يمكن أخذ صورة لشاشة الكمبيوتر بسرعة و حفظها في فهرس المشروع الكود يمكن تنفيذه من خلال تايمر لتصوير الشاشة كل فترة زمنية معينة ثم يتم جمع كل الصور و تحويلها الي ملف صور متحركة أو ملف فيديو ويمكن الاستغناء عن السطر الذي يقوم بحفظ الصورة و نضيف الصور الي مصفوفة وبحيث يسهل التعامل معها كيفما نريد Public Class  Form1     Private Sub Form1_Load ( sender  As  Object ,  e  As  EventArgs )  Handles MyBase . Load         Dim rect  As  Rectangle  =  Screen . PrimaryScreen . Bounds         Using scrBitmap  As  Bitmap  =  Image . FromHbitmap (New  Bitmap ( rect . Width ,  rect . Size . Height ). GetHbitmap (),  Graphics . FromHwnd ( IntPtr . Zero ). GetHdc ())              Using g  As  Graphics  =  Graphics . FromImage ( scrBitmap )                  g . CopyFromScreen ( rect . Location ,  rect . Location ,  rect . Size ,  CopyPixelOperation . SourceCopy )                  scrBitmap . Save (( ".\" & DateTime.Now.ToFileTimeUtc & " . jpg "), Im

Calculate the color of GDI hpalette - GDI+ secrets

    Private Function GetHppaletteColor() As Color         Return Image.FromHbitmap(New Bitmap(Me.Width, Me.Height).GetHbitmap(), IntPtr.Zero).GetPixel(0, 0)     End Function or   Private Function GetHppaletteColor() As Color         Return Image.FromHbitmap(New Bitmap(Me.Width, Me.Height).GetHbitmap(), Graphics.FromHwnd(IntPtr.Zero).GetHdc).GetPixel(0, 0)     End Function the below code shows hoe to save the screen bitmap which hold the hpalette color         Dim rect As Rectangle = CType(Nothing, Rectangle)         Dim devices As Screen() = Screen.AllScreens         For i As Integer = 0 To devices.Length - 1             Dim device As Screen = devices(i)             rect = Rectangle.Union(rect, device.Bounds)         Next         Dim mask As Bitmap = Image.FromHbitmap(New Bitmap(rect.Size.Width, rect.Size.Height).GetHbitmap(), Graphics.FromHwnd(IntPtr.Zero).GetHdc())         Dim fileName As String = Application.StartupPath & "\screen.jpg"         ma

Using Yield to get word count in a string

The below code shows one of the ideas to count the exist of a word in a string   Private Iterator Function GetWordCount(value As String, s As String) As IEnumerable(Of Integer)         Dim index As Integer = -1         Do             index = value.Split(" ").ToList.IndexOf(s, index + 1)             If index >= 0 Then                 Yield index             End If         Loop While index >= 0         Return     End Function Uage:          Dim s As String = "my doc my comp my dog my heart"         Dim result As String = ""         result += String.Format("{0}", GetWordCount(s, "my").Count)

A Function to Convert Generic T To String

    Private Function Convert(Of T)(value As T) As String         Return System.Convert.ToString(CType(value, Object), System.Globalization.CultureInfo.CurrentCulture())     End Function

Control Finder Class

من فترة كنت كتبت بعص الأكواد لإيجاد جميع الكونترول الموجودة في اي كونترول و الكود موجود في اللينك التالي اللينــــــــــــــــــــــــــك لكن و مع التطور الحاصل في الدوت نت قررت أخيرا تحويل معظم الأكواد الي كلاسات بحيث يسهل تطويرها و الاستفادة منها في اي مشروعات مستقبلة و الكود التالي عبارة عن مساهمة جيدة يمكن إضافتها الي اي مكتبة يتم كتابتها للدوت نت Public Class ControlFinder     Private _controls As IEnumerable(Of Control)     Public Sub New(ctrl As Control)         Me.New(ctrl, Function(c) c IsNot Nothing AndAlso Not c.IsDisposed AndAlso c.IsHandleCreated AndAlso c.Visible)     End Sub     Public Sub New(ctrl As Control, criteria As Func(Of Control, Boolean))         If ctrl Is Nothing Then             _controls = New Control() {}         Else             _controls = GetControls(ctrl.Controls, ctrl, criteria)         End If     End Sub     Public ReadOnly Property Controls As IEnumerable(Of Control)         Get             Return _controls        

Image To Color Matrix & Vice-versa

الكلاس التالي يمكن استخدامه في استخلاص ألوان الصورة علي هيئة مصفوفة ثم اعادة كتابتها الي صورة و الكلاس يعطي الإمكانية في التلاعب  بألوان الصورة الكلاس قد يكون بطئ قليلا مع الصور اكبيرة الحجم بسبب حلقة التكرار المستخدمة للحصول علي لون البكسل او إعادة كتابة لون البكسل الي صورة لكن الهدف من الموضوع هو توضيح الفكرة لا أكثر و لا أقل الكود التالي يوضح شكل الكلاس  Public Class Picture     Private pseudoColors As Color(,)     Public Sub New(height As Integer, width As Integer)         pseudoColors = New Color(height - 1, width - 1) {}     End Sub     Public ReadOnly Property Height() As Integer         Get             Return pseudoColors.GetLength(0)         End Get     End Property     Public ReadOnly Property Width() As Integer         Get             Return pseudoColors.GetLength(1)         End Get     End Property     Default Public Property Color(x As Integer, y As Integer) As Color         Get             Return pseudoColors(x, y)         End Get         Set(value As Col

Aggregate String Array

   Public Function AggregateStrings(strings As IEnumerable(Of String), separator As String) As String         Return strings.Aggregate("", Function(txt As String, current As String)                                          If Not String.IsNullOrEmpty(txt) Then                                              Return String.Format("{0}{1}{2}", txt, separator , current)                                          End If                                          Return String.Format("{0}", current)                                      End Function)     End Function Usage:         Dim values As List(Of String) = New List(Of String) From {"100", "200", "300"}         Dim result As String = AggregateStrings(values, " "c)

MeasureString Using Computer Screen

1- Calculate Screen Rectangle     Friend Function ScreenToRectangle() As System.Drawing.Rectangle         Dim rect As System.Drawing.Rectangle = CType(Nothing, System.Drawing.Rectangle)         Dim devices As System.Windows.Forms.Screen() = System.Windows.Forms.Screen.AllScreens         For i As Integer = 0 To devices.Length - 1             Dim device As System.Windows.Forms.Screen = devices(i)             rect = System.Drawing.Rectangle.Union(rect, device.Bounds)         Next         Return rect     End Function 2- Capture Screen Image     Friend Function ScreenToImage() As System.Drawing.Image         Dim screenImage As System.Drawing.Bitmap = New System.Drawing.Bitmap(ScreenToRectangle.Width, ScreenToRectangle.Height)         Using g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(screenImage)             g.CopyFromScreen(ScreenToRectangle.X, ScreenToRectangle.Y, 0, 0, ScreenToRectangle.Size, System.Drawing.CopyPixelOperation.SourceCopy)         End Using       

TextBuilder

Public Structure TextBuilder     Private text As String     Public Sub Add(value As String)         Add(value, "")     End Sub     Public Sub Add(values As IEnumerable(Of String))         For Each value As String In values             If Not value Is Nothing Then                 Me.Add(value)             End If         Next     End Sub     Public Sub Add(value As String, separator As String)         Me.text += value.Aggregate(" "c, Function(s As String, current As String)                                              If Not String.IsNullOrEmpty(s) Then                                                  Return String.Format("{0}{1}{2}", s, separator, current)                                              End If                                              Return String.Format("{0}", current)                                          End Function)     End Sub     Private Function Trim(s As String, separator As Char) As String  

Inventing The Wheel, Simple Practice; Simulate(Of T As IDisposable)

Public Structure Simulate(Of T As IDisposable)     Public Sub New(value As T)         Func = Function() CType(value, IDisposable)     End Sub     Public ReadOnly Property Func As Func(Of IDisposable) End Structure Usage:         Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click         Dim graphicsSimulator As Simulate(Of Graphics) = New Simulate(Of Graphics)(Me.CreateGraphics)         Using CType(graphicsSimulator.Func().Invoke(), Graphics)             CType(graphicsSimulator.Func().Invoke(), Graphics).FillRectangle(SystemBrushes.WindowFrame, New Rectangle(30, 30, 100, 0))         End Using         Dim sqlConnectionSimulator As Simulate(Of System.Data.SqlClient.SqlConnection) = New Simulate(Of System.Data.SqlClient.SqlConnection)(New System.Data.SqlClient.SqlConnection)         Using CType(sqlConnectionSimulator.Func().Invoke(), System.Data.SqlClient.SqlConnection)             Dim simulate = CType(sqlConnectionSimulator.Func().Invoke(), System.Data.

Inventing The Wheel, Simple Practice; Implementing IList (Of T)

Public Class RiverNileList(Of T)     Implements IList(Of T)     Private _list As IList     Public Sub New(list As IList)         _list = list     End Sub     Public ReadOnly Property Count As Integer Implements ICollection(Of T).Count         Get             Return _list.Count         End Get     End Property     Public ReadOnly Property IsReadOnly As Boolean Implements ICollection(Of T).IsReadOnly         Get             Return _list.IsReadOnly         End Get     End Property     Default Public Property Item(index As Integer) As T Implements IList(Of T).Item         Get             Return CType((CObj(_list(index))), T)         End Get         Set(value As T)             _list(index) = value         End Set     End Property     Public Sub Add(item As T) Implements ICollection(Of T).Add         _list.Add(item)     End Sub     Public Sub Clear() Implements ICollection(Of T).Clear         _list.Clear()     End Sub     Public Sub CopyTo(array() As T, arrayIndex As Integer) Implements ICol

حماية السورس كود المكتوب بالدوت نت

اليوم و بعد مجموعة من التجارب استطعت أن أجد طريقة جيدة جدا لحماية الملفات المكتوبة بلغة الدوت نت Voila & Cheers

File Signature

Image
هذا الموضوع الهدف منه توضيح ماهية File Signature الخاصة بجميع الملفات الشهيرة و المعروفة لنظام التشغيل في جهاز الكمبيوتر ماذا تعني كلمة File Signature  هو عبارة عن خليط من حروف و أرقام يتم إضافتها في بداية الملف ومن خلاله تستطيع تحديد هوية الملف و هذا الخليط من الحروف و الأرقام يعمل بمثابة ختم أو Stamp للملف ومنه يستطيع نظام التشغيل Operating System الموجود علي جهاز الكمبيوتر الخاص بك تحديد نوعية البرنامج الذي يصلح لفتح الملف بشكل عام هذا الخليط من الأرقام و الحروف يتم كتابته الي الملف علي هيئة بايت  Byte أيضا هذا الخليط غالبا له قيمة ثابتة و في بعض الأحيان تقوم الشركات بتغيير قيمة هذا الخليط طبقا لإحتياجاتها وأيضا كل شركة شهيرة من شركات الكمبيوتر تستخدم قيمة خاصة بها حسب نوعية الملفات وكمثال توضيحي للفكرة لنفترض أنك قمت بتشغيل برنامج Paint ثم فتحت ملف جديد من خلال البرنامج و سواء رسمت أو لم ترسم شيئا في الملف ثم قمت بحفظ الملف هنا يقوم برنامج Paint  بإضافة قيمة  معينة وهذه القيمة ممثلة في الحرفان BM ويتم اضافة هذان الحرفان في بداية الملف بحي