اذهب الي المحتوي
أوفيسنا

البحث في الموقع

Showing results for tags 'vb.net'.

  • Search By Tags

    اكتب الكلمات المفتاحيه بينها علامه الفاصله
  • Search By Author

نوع المحتوي


الاقسام

  • الترحيب
  • قسم تطبيقات و لغات مايكروسوفت
    • قنوات تعليمية شخصية و دورات تدريبية مجانية و مدفوعة
    • إعلانات شخصية بأجر للاعضاء
    • المنتدى المفتوح
    • منتدى الاكسيل Excel
    • قسم الأكسيس Access
    • دعم أنظمة الويندوز المختلفة
    • منتدي الوورد Word
    • منتدى الباوربوينت
    • منتدى الاوتلوك Outlook
    • منتدى الفيزيو Visio
    • منتدي مايكروسوفت بروجكت Ms Project
    • منتدى الفرنت بيج العام Frontpage
    • تطبيقات Power Apps
    • وان نوت One Note
    • الناشر بابليشر Publisher
    • Communicator
    • Expression Web
    • SQL Server
    • VB.net
    • C#.net
    • Asp.net
  • الغات و أدوات البرمجة الأخرى
    • حوارات الويب العامة
    • Delphi
    • PHP
    • برمجة الاندرويد
  • أقسام الإدارة و إدارة المشاريع و تطبيقاتها
    • الاستراتيجية وإدارة محافظ المشاريع
    • إدارة المشاريع
    • Scaled Agile SAFe
    • إدارة الجودة
    • القيادة و تنمية المهارات
    • Primavera Enterprise
    • Primavera 3.1
  • البحث العلمي و علوم البيانات
    • مناهج البحث العلمي
    • علم الإحصاء
    • الذكاء الإصطناعي و التنقيب فى البيانات
    • Orange
    • R
    • SPSS
    • Python
  • القسم العام
    • مشاركات المدونات
    • نرحب بزوار الموقع
    • قسم الاقتراحات و الملاحظات
    • أوفيسنا على الفيسبوك

الاقسام

  • VBA Code Library
  • قسم الإكسيل
  • قسم الأكسيس
  • قسم الوورد
  • Project Management
  • Self development التطويرالذاتي
  • EFQM & DGEP
  • معلومات مفيدة
  • أدوات عامة

مدونات

  • M-Taher's Blog
  • مدونة محمد طاهر
  • Officena
  • اا الفاروق اا
  • ‎مدونة أخبار التكنولوجيا
  • M-Taher's Blog
  • يحيى حسين's Blog
  • خبور خير's Blog
  • Dr. AbdelMalek Abu Sheikh's Blog
  • m.hindawi's Blog
  • احمدزمان's Blog
  • الحسامي
  • مدونة أ / محمد صالح
  • yahiaoui's Blog
  • عبدالله المجرب's Blog
  • صيد الخواطر
  • حمادة عمر مدونة
  • مدونة جعفر
  • مدونة عادل حنقي
  • مجدى يونس: لمسة وفاء لمنتدى اوفيسنا
  • Excel Expert Financial&Accounting
  • مدونة اعمال ايقونات الماس لمنتدى اوفيسنا
  • رقائق فى دقائق
  • Shivan Rekany

ابحث عن النتائج فى ......

ابحث عن النتائج التي تحوي ....


تاريخ الانشاء

  • بدايه

    End


اخر تحديث

  • بدايه

    End


Filter by number of...

انضم

  • بدايه

    End


مجموعه


Job Title


البلد


الإهتمامات


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype

  1. [ الموضوع ] ، [ الدرس الثالث ، الدوال ، ماهي ، كيف نعلن عنها ، ما نوعها ، ما اجزائها ] [ في سلسلة دروس البرمجة ] [ Vb.Net ] [ المستوى المتوسط ] - الدوال ( Functions ) ماهي ؟ الدالة / هو الامر الذي عند كتابتة ، ينفذ شيئا ما في اي وقت . مثال سريع ، لو احببنا ان نكتب [ Message ] هذه تسمى الدالة ( دالة الـ MsgBox ) ، طيب بعد ان كتبناها نرى النتيجة ، ظهر لنا صندوق الرسالة ، اذن فالدالة هي امر يتم استدعاءة في اي وقت ترغب به ليقوم بتنفيذ شيئا ما ، انت تحدده ، هذه كـ فكره عامه عن الدوال - انواع الدوال ( Type Functions ) ماهي انواعها ؟ تنقسم الدوال ، الى عدة اقسام من اهمها 1 - دوال ادخال النص واخراجه ، المتمثلة بـ اخراج النص ابسط مثال هو الـ [ MessageBox ] ، كما في الصورة الاتية ادخال النص ابسط مثال هو الـ [ InputBox ] ، كما في الصورة الاتية 2 - دوال التعامل مع المجلدات والملفات ، وتتمثل بـ 1 - ChDir ، تعمل هذه الدالة على تغيير الدليل الافتراضي الى دليل اخر على نفس محرك الاقراص " مثال عليها " 2 - ChDrive ، تعمل هذه الدالة على تغيير محرك القرص الحالي بمحرك قرص اخر " مثال عليها " 3 - CurDir ، تعمل هذه الدالة على ارجاع المسار الحالي " مثال عليها " 4 - Dir ، تعمل هذه الدالة للتحقق في حالة وجود الملفات بالمسار الذي انت تحدهه " مثال عليها " طلبنا منه ، ان يقوم بالتحقق من المسار [ \:C ] وان يقوم باحصاء كل المجلدات التي فيها ، فتظهر النتيجة على حسب ما طلبت منه على شكل [ Message ] الخ .. من باقي المجلدات في المسار المطلوب ، كلها سيعرضها على شكل [ Message ] 5 - FileCopy ، تعمل هذه الدالة على نسخ ملف من مكان الى مكان اخر " مثال عليها " 6 - FileDateTime ، تعمل هذه الدالة على تحديد تاريخ ووقت تم انشاء ملف او تعديل ملف ويستند تنسيق التاريخ والوقت المعروض على الاعدادات المحليه للنظام الخاص بك " مثال عليها " حددنا مسار ملف معين وطلبنا ان يخبرنا بتاريخ ووقت ان شاءة ، في [ Message ] 7 - FileLen ، تعمل هذه الدالة على ارجاع ملف البايت او بمعنى ادق قياس حجم الملف تبعا لنوع البيانات التي يحتويها " مثال عليها " لدي ملف في المسا [ \ ] اسمه [ najaf ] لاحظو معي كم حجمه حجمه [ 8 ] كيلو بايت ، بعد كتبنا اظهر لنا [ Message ] يخبرنا بحجم بايتات الملف 8 - GetAttr ، تعمل هذه الدالة على تحديد سمات ملف او مجلد ما انت تحدده " مثال عليها " 9 - SetAttr ، تعمل هذه الدالة على تغيير سمات الملف او المجلد الذي انت تحدده " مثال عليها " تقوم بتفعيل خيارات [ Hidden ] + [ Read-Only ] الخاصة باي ملف تحدده 10 - Kill ، تعمل هذه الدالة على حذف ملف من القرص الذي انت تحدده " مثال عليها " 11 - MkDir ، تعمل هذه الدالة على انشاء مجلد جديد بالاسم الذي تريده و بالمسار الذي تحدده انت " مثال عليها " 12 - RenameFile ، تعمل هذه الدالة على تغيير اي اسم ملف الى الاسم الذي تريده " مثال عليها " 13 - RmDir ، تعمل هذه الدالة على حذف المجلدات الفارغة التي انت تحدهها " مثال عليها " - دوال التحقق من نوع القيم ( Check Functions Of The Type Of Values ) وتتمثل بـ 1 - IsArray ، للتحقق من العديد من المتغيرات " مثال عليها " 2 - IsDate ، للتحديد ما اذا تمثل عدة متغيرات قيم ، التاريخ " مثال عليها " 3 - IsDBNull ، لتحديد ما اذا متغير يقيم الى DBNULL " مثال عليها " 4 - IsNothing ، لتحديد ما اذا كان المتغير مرتبط بكائن مع اي كائن ثاني " مثال عليها " 5 - IsNumeric ، لتحديد ما اذا كان يمكن تقييم محتويات المتغير كرقم " مثال عليها " 6 - IsReference ، ارجاع قيمة منطقية " مثال عليها " 7 - TypeName ، لارجاع نوع البيانات والمعلومات حول العديد من المتغيرات " مثال عليها " 8 - VarType ، للارجاع نوع البيانات والمعلومات حول تصنيف العديد من المتغيرات " مثال عليها " - دوال تحويل القيم ( Conversion functions between the values ) وتتمثل بـ 1 - CBool ، تعمل هذه الدالة على تحويل التعبيرات لقيم منطقية ، اذا كان [ 0 ] يرجع [ False ] " مثال عليها " اما اذا كانت اكبر من [ 0 ] مثلا [ 6 ] تعطي قيمه [ True ] " مثال عليها " 2 - CByte ، تعمل هذه الدالة على للتحويل الى بايت " مثال عليها " 3 - CChar ، تَعمل هَذه آلدآلة عَلى تَحويل آلحَرف آلآول مَن آلمُتغير آلى سَلسلة مَن نُوع CChar " مثآل عَليهآ " Char. 4 ، تعمل هذه الدالة كـ وسيط لادخال البيانات للدالة CChar لذا يجب ان تكون من نوع Char " مثال عليها " 5 - CDbl ، وتعمل هذه الدالة على تحويل نوع بيانات متغيرها الى عدد مضاعف الدقه Double " مثال عليها " 6 - CDec ، تعمل هذه الدالة على تحويل القيمة الرقمية الى قيمة عشرية " مثال عليها " 7 - CInt ، تعمل هذه الدالة على تحويل القيمة الى عدد صحيح " مثال عليها " 8 - CLng ، تعمل هذه الدالة على تحويل القيمة الى قيمة عددية من نوع Long " مثال عليها " 9 - CObj ، تعمل هذه الدالة على تحويل القيمة الرقمية الى كائن " مثال عليها " 10 - CShort ، تعمل هذه الدالة على تحويل القيمة الرقمية الى 11 - CSng ، تعمل هذه الدالة على تحويل القيمة الرقمية الى قيمة من نوع Single " مثال عليها " 12 - CStr ، تعمل هذه الدالة على تحويل القيمة الرقمية الى قيمة من نوع String " مثال عليها " 13 - CType ، تعمل هذه الدالة على تحويل القيم " مثال عليها " هذا فيما يخص الدوال " دوال ادخال النص واخراجه " ، " دوال التعامل مع المجلدات والملفات " " دوال التحقق من نوع القيم " ، " دوال التحويل بين القيم " تم بحمد الله ، SEMO.Pa3x
  2. السلام عليكم، كما في العنوان شرح استخدام دالة TerminateProcess لقتل العمليات.. اولا: الدوال المُستخدم بالشرح TerminateProcess , FindWindow , GetWindowThreadProcessId , CloseHandle , OpenProcess تصريح الدالة: Declare Auto Function TerminateProcess Lib "KERNEL32.DLL" (ByVal hProcess As IntPtr, ByVal uExitCode As UInteger) As Boolean الدالة تحتاج الى براميترات 2 الاول: مقبض العملية الثاني: قيمة رقمية، نضع 0 لتمثل قتل العملية فيكون الاستدعاء بالشكل العام هكذا TerminateProcess(hwd, 0) hwd= تمثل المقبض ------------------------------------------------------------ كيفية الحصول على مقبض للعمليات ؟؟ ------------------------------------------------------------ هناك عدة طرق اسهلها، استخدام دالة FindWindow تصريح الدالة: Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer استدعاء الدالة: Dim hwd As IntPtr = FindWindow(Nothing, "WindowTitle") الدالة تحتاج براميترات 2 الاول: اسم كلاس النافذة بامكانك كتابة استخراج اسم الكلاس بواسطة اداة AutoIt Window Info او اداة ++Spy التي تأتي مع فيجوال دوت نت. البراميتر الثاني: عنوان النافذة (العنوان المكتوب فوق النافذة للبرنامج) بأمكانك كتابة احد هذه البراميترات وتعويض البراميتر الثاني بـ Nothing ---------------------------------------------------------------------------------------------------- او استخدام طريقة اكثر بساطة وبدون api ------------------------------------------------------------ For Each x As Process In Process.GetProcessesByName("NameYourProcess") MsgBox(x.Handle) Next بعد ان تعلمنا كيفية جلب المقبض للعملية ، نأتي الى تكملة شرحنا في استدعاء الدالة صرح الدوال الاتية مع الستركشر الخاص بدالة OpenProcess Declare Auto Function TerminateProcess Lib "KERNEL32.DLL" (ByVal hProcess As IntPtr, ByVal uExitCode As UInteger) As Boolean <DllImport("user32.dll", SetLastError:=True)> _ Private Shared Function GetWindowThreadProcessId(ByVal hwnd As IntPtr, ByRef lpdwProcessId As Integer) As Integer End Function Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As ProcessAccessFlags, bInheritHandle As Boolean, processId As UInt32) As IntPtr <DllImport("kernel32.dll", SetLastError:=True)> _ Private Shared Function CloseHandle(ByVal hHandle As IntPtr) As Boolean End Function <Flags> Public Enum ProcessAccessFlags As UInteger All = &H1F0FFF Terminate = &H1 CreateThread = &H2 VirtualMemoryOperation = &H8 VirtualMemoryRead = &H10 VirtualMemoryWrite = &H20 DuplicateHandle = &H40 CreateProcess = &H80 SetQuota = &H100 SetInformation = &H200 QueryInformation = &H400 QueryLimitedInformation = &H1000 Synchronize = &H100000 End Enum استدعاء الدالة وقتل العملية: Dim TPID, TPHWD As Integer ' Get the process ID. TPID = 0 GetWindowThreadProcessId(HWND, TPID) ' Replace HWND with your handle process ' Open the process. TPHWD = OpenProcess(ProcessAccessFlags.Synchronize Or ProcessAccessFlags.Terminate, 0, TPID) ' Terminate the process. TerminateProcess(TPHWD, 0) ' Close the process. CloseHandle(TPHWD) استبدل HWND بمقبض العملية اي: Dim TPID, TPHWD As Integer ' Get the process ID. TPID = 0 GetWindowThreadProcessId(FindWindow(Nothing, "Untitled - Notepad"), TPID) ' Replace HWND with your handle process ' Open the process. TPHWD = OpenProcess(ProcessAccessFlags.Synchronize Or ProcessAccessFlags.Terminate, 0, TPID) ' Terminate the process. TerminateProcess(TPHWD, 0) ' Close the process. على سبيل المثال طبقت على المفكرة اي سؤل اني موجود تحياتي تم بحمد الله ، SEMO.Pa3x
  3. السلام عليكم ورحمة الله كيف يمكن كتابة كود بحث بين تاريخين في الريبورت فيور علما اني استخدمت هذا الكود ولم ينجح Me.FixReportBindingSource.Filter = " FixDate >= '" & dtFrom.Value & "' and FixDate <= '" & dtTo.Value & "'"
  4. اقدم لكم الشرح المفصل لكيفية حماية برنامجك من الكسر وصد الكراكرز من عملية تكريكة مبدا عمل الحماية تقوم بالتحقق من ، القطع الاتية .. [ MOTHER BORED ID ] - [ CPU ID ] - [ MAC ADDRESS ] - [ HWID ] لم افهم ؟ اعطيك مثال بسيط ، الان انا قمت ببرمجة برنامج واريد اعطاء لشخص اسمه [ احمد ] لكن ! اخاف ان اعطيه البرنامج فيقوم بنشره ، بهذه الطريقة سالجئ لحماية برنامجي على قطع الجهاز الخاصة بـ [ احمد ] المتمثلة بالهاردوير والمذربورد وغيرها [ الادوات المطلوبة / لعمل الحماية ] [ 1 ] برنامج Net. اي اصدار انا طبقت على الاصدار 2012 [ 2 ] حساب بموقع PasteBin.com [ 3 ] مكتبة System.Management [ 4 ] فنكشنات التحقق من قطع الجهاز ، مكتوبة بلغة [ Net. ] اولا نقوم بتسجيل عضوية بموقع [ PasteBin ] رابط التسجيل [ هنا ] اتمام التسجيل ، ظهور رسالة تخبرك بالتوجه نحو بريدك لتفعيل العضوية بعد عملية التفعيل ظهور رسالة تخبرك بنجاح التفعيل الان نقوم بتسجيل الدخول ثم ، نقوم بفتح الفيجوال ستوديو واختيار مشروع جديد ، ثم نقوم باضافة [ TextBox1 ] + [ Button1 ] من قائمة الادوات ليصبح المشروع كالاتي .. الان نقوم باضافة مكتبة الـ [ System.Management] من خيارات المشروع ، كلك يمين ثم نتوجه الى النافذة [ Refernces ] ثم نقوم بكتابة اسم المكتبة في مربع البحث [ System.Mangament ] ثم نضغط موافق الان نقوم بالنقر المزدوج على الـ [ Form1 ] ونقوم بمسح كل الاكواد ونلصق هذه الاكواد Imports System.Management Imports System Imports System.Text Imports System.Security.Cryptography Imports System.Net Public Class Form1 Dim HW As New SEC_Informations Dim HDD As String Dim CPU As String Dim MB As String Dim MAC As String Dim hwid As String = Strings.UCase(HW.getMD5Hash(CPU & HDD & MB & MAC)) Public Class SEC_Informations '..................................... '>> ReCoder : SEMO.Pa3x '>> Skype : Security.Najaf '..................................... Friend Function GetProcessorId() As String Dim strProcessorId As String = String.Empty Dim query As New SelectQuery("Win32_processor") Dim search As New ManagementObjectSearcher(query) Dim info As ManagementObject For Each info In search.Get() strProcessorId = info("processorId").ToString() Next Return strProcessorId End Function Friend Function GetMACAddress() As String Dim mc As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration") Dim moc As ManagementObjectCollection = mc.GetInstances() Dim MACAddress As String = String.Empty For Each mo As ManagementObject In moc If (MACAddress.Equals(String.Empty)) Then If CBool(mo("IPEnabled")) Then MACAddress = mo("MacAddress").ToString() mo.Dispose() End If MACAddress = MACAddress.Replace(":", String.Empty) Next Return MACAddress End Function Friend Function GetVolumeSerial(Optional ByVal strDriveLetter As String = "C") As String Dim disk As ManagementObject = New ManagementObject(String.Format("win32_logicaldisk.deviceid=""{0}:""", strDriveLetter)) disk.Get() Return disk("VolumeSerialNumber").ToString() End Function Friend Function GetMotherBoardID() As String Dim strMotherBoardID As String = String.Empty Dim query As New SelectQuery("Win32_BaseBoard") Dim search As New ManagementObjectSearcher(query) Dim info As ManagementObject For Each info In search.Get() strMotherBoardID = info("SerialNumber").ToString() Next Return strMotherBoardID End Function Friend Function getMD5Hash(ByVal strToHash As String) As String Dim md5Obj As New System.Security.Cryptography.MD5CryptoServiceProvider Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strToHash) bytesToHash = md5Obj.ComputeHash(bytesToHash) Dim strResult As String = "" For Each b As Byte In bytesToHash strResult += b.ToString("x2") Next Return strResult End Function End Class Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load CPU = HW.GetProcessorId() HDD = HW.GetVolumeSerial("C") MB = HW.GetMotherBoardID() MAC = HW.GetMACAddress() TextBox1.Text = (hwid) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim w As New WebClient Dim cpuids As String() = Split(w.DownloadString("Your Link"), "|") Dim cur As String = hwid For Each c As String In cpuids If cur = c Then GoTo authed End If Next MessageBox.Show("1 - Make sure of the title of [ Hardware ] Is not prohibited" & ChrW(13) & ChrW(10) & ChrW(13) & ChrW(10) & "2 - Make sure your Internet connection" & ChrW(13) & ChrW(10) & ChrW(13) & ChrW(10) & "3 - If you find other problems contact on [ Skype : Security.Najaf ]", "Warning message", MessageBoxButtons.OK, MessageBoxIcon.Error) Environment.Exit(0) authed: MessageBox.Show("Has been successfully activated version" & ChrW(13) & ChrW(10) & ChrW(13) & ChrW(10) & "Thank you for using this program", "Welcome Message", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub End Class الان نقوم بتشغيل المشروع ، نلاحظ سيظهر لنا رقم طويل نقوم بنسخة ثم نقوم بالذهاب لموقع [ PasteBin ] ونقوم بكتابة مشاركة جديدة نقوم بكتابة الرقم الذي قمنا بنسخه ، مع تعديل خيارات المشاركة ثم نقوم بالضغط على كلك يمين على كلمة [ RAW ] ونختار نقوم بالرجوع لمشروعنا ونستبدل كلمة [ Your Link ] بالرابط الجديد الان قم باعطاء برنامجك للعميل ، وقل له ان يشغله ، بعد ان يقوم العميل بتشغيل البرنامج سيظهر له الرقم الطويل يقوم باعطاءك اياه لتقوم انت بوضعه بالموقع وسيعمل برنامجك بدون اي مشاكل اما عند الاشخاص الغير مصرح لهم باستعمال البرنامج الان السؤال كيف ساقوم باضافة اكثر من رقم عميل بالموقع ؟ الجواب بين كل عميل واخر افصل بينهم بالـ [ | ] مثال بسيط على العملية .. نصائح لحماية معقدة اكثر ، قم بضغط البرنامج بحماية [ SafeEngine ] او [ Consufer ] او غيرها من باقي الحمايات العنيدة .
  5. السلام عليكم ورحمة الله اعمل على برنامج يقوم باستخدامه العديد من المستخدمين وعند اضافة او تعديل مستخدم احتاج لارسال ميل بـ معلومة باضافة مستخدم الى مديره ثم احتاج لارسال ميل اخر للشخص نفسة باسم المستخدم وكلمة المرور احتاج المساعدة فى تنفيذ كود يقوم بارسال ميل من اوت لوك من الجهاز المحلى توصلت لنتيجة التالية وتعطى رسالة بتأكيد الارسال دون ارسال الميل Imports System.Net.Mail.MailMessage Imports System.Net Imports System.Net.Mail Public Class ADMIN Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click Dim mssg As New MailMessage( "email1@te.eg" , "email2@te.eg") mssg.Subject = " الموضوع - العنوان" mssg.Body = "ميل تجريبى من اوت لوك !! " Dim smMcli As New SmtpClient("localhost", 25) smMcli .EnableSsl = True smMcli .Credentials = New NetworkCredential("email@te.eg", "password") Try smMcli .SendMailAsync(mssg) MessageBox.Show("تم تأكيد ارسال الميل!!") Catch ex As Exception MessageBox.Show("وجد خطاء ولم يتم الارسال!!" & ex.Message) End Try End Sub
  6. السلام عليكم,, اضف الكود في Module Public Function MsgBox2(ByVal Prompt As Object, Optional ByVal Buttons As MsgBoxStyle = MsgBoxStyle.OkOnly, Optional ByVal Title As Object = Nothing) As MsgBoxResult Dim Background As New Form Background.FormBorderStyle = FormBorderStyle.None Background.WindowState = FormWindowState.Maximized Background.ShowInTaskbar = False Background.BackColor = Color.Black Background.Opacity = 0.6 Background.TopMost = True Background.Show() Dim x As New MsgBoxResult x = MsgBox(Prompt, Buttons, Title) Background.Close() Return x End Function الاستدعاء , اكتب مثلا في الزر MsgBox2("Hello World !", MsgBoxStyle.Critical, "ERROR") الحقوق لصاحبها HASAN6.0
  7. Public Class CenteredComboBox Inherits ComboBox Sub New() Me.DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed Me.DropDownStyle = ComboBoxStyle.DropDownList End Sub Private Sub CenteredComboBox_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles Me.DrawItem e.DrawBackground() Dim txt As String = "" If e.Index >= 0 Then txt = Me.Items(e.Index).ToString TextRenderer.DrawText(e.Graphics, txt, e.Font, e.Bounds, e.ForeColor, TextFormatFlags.HorizontalCenter) e.DrawFocusRectangle() End Sub End Class ضع الاكواد في كلاس واعمل كومبايل، وستظهر لك اداة كومبوبوكس جديدة قم بإستخدامها وستجد ان النص اصبح في الوسط بالتوفيق للجميع.
  8. السلام عليكم, في السابق كنت استخدم خطوط معينة في برامجي وعند اعطاء البرنامج للعميل لاتظهر الخطوط التي قمت باستخدامها بل يظهر بمكانها الخط ( Arial ) وهذه مُشكلة. كت في وقتها الجأ الى ان اضع الخط بجانب قاعدة البيانات وفي داخل قاعدة البيانات اقوم بعمل تحقق لمجلد Fonts والبحث عن الخط في بداية تشغيل القاعدة, فإن لم يجده يعي رسالة للعميل بان الط مفقود وعليه ان يقوم بتثبيته من جانب البرنامج. بحثت طويلاً في الانترنت عن تثبيت خط من الاكسس فقط بدون مساعدة عامل خارجي ولكن لم اصل لنتيجة. اليوم بحمد الله قمت بحل المشكلة بإستخدام ( Visual .NET ) قمت بكتابة اداة بسيطة وظيفتها تثبيت الخط. يتم تمرير براميتر لها وهي بدورها ستقوم بتثبيته الدوال المستخدمة: AddFontResource CreateScalableFontResource ShellExecuteA للمزيد من المعلومات ، اضغط على اسم الدالة ارفقت لكم المصادر من MSDN شرح بسيط لمن لم يعرف ماذا اقصد بتثبيت الخط واستخدام الخط وانه لن يظهر في حال كان العميل لا يملكه. قمت بارفاق قاعدة بيانات لكم كـ مثال للشرح مع الخط المستخدم مع الاداة. شرح الاستعمال: يجب ان تكون الاداة ( SEMO_RegisterFont.exe ) هي والخط الذي سوف تستخدمه بجانب قاعدة البيانات. افتح برنامجك وضع فيه هذا الاجراء. Sub RegisterFont(nFont) Dim strExe As String Dim strArg As String strExe = CurrentProject.Path & "\" & "SEMO_RegisterFont.exe" strArg = "/SEMO/" & nFont ShellExecute 0, "runas", strExe, strArg, vbNullString, SW_SHOWNORMAL End Sub في الاستدعاء اي في الحدث Form_Current RegisterFont "DroidSansArabic.ttf" حيث ان الـ DroidSansArabic.ttf هو اسم الخط الذي قمنا بوضعه بجانب قاعدة البيانات ملاحظة مهمة جدا: في حال كان اسم الخط يتكون من اكثر من كلمة مثل ( Droid Sans Arabic.ttf ) قم بحذف المسافات بين كلمة واخرى بحيث يصبح ( DroidSansArabic.tts ) وستعمل قاعدة البيانات التي قمت بتصميمها بشكل رائع وبالخطوط التي قمت انت بأختيارها بدون الخوف من مشكلة عدم توفر الخطوط في جهاز العميل. الشرح حصري للمنتدى وغير موجود في الانترنت. لا تشكرني الا اذا وجدت انني استحق ذلك. تم بحمد الله حسنين RegisterFont_SEMO_Pa3x.rar
  9. السلام عليكم. بعد جهد كبير وسهر ليالي كثيرة, وكلها محاولات بائت بالفشل لربط الـ Visual Studio .NET وقراءة البيانات بالاكسس وكانت متمثلة بمكتبة dll او tlb للاسف كانت هنالك عوائق ومنها لكي يتم استخدام مكتبة من نوع tlb كان يجب اعطائها صلاحيات مسؤول لكي تتمكن من تسجيل هذه المكتبة في HKEY_CLASSES_ROOT في الريجستري. وتستخدمها على شكل References وفي حال استخدام مكتبة من نوع dll كان يتطلب استخدام دالة LoadLibraryA وهذه سيعتبرها الانتي فايروس كـ ملف مريب خصوصا لانها تقوم بتحميل المكتبة في الذاكرة وبدون توقيع رقمي..الخ اليوم قمت ببرمجة شيء مختلف ومميز عبارة عن تطبيق صغير بلغة NET. يتم تمرير البيانات من الاكسس لهذه التطبيق لكي يقوم بعدها الاكسس باقتناص المخرجات من التطبيق بواسطة الي remote shell ثم عرضها في الاكسس مرة اخرى وكان التطبيق على تحويل التاريخ الميلادي الى هجري لكن هذه المرة بصورة ادق وافضل. كما نعرف جميعنا ان التاريخ الهجري يكون غير مضبوط زيادة يوم او يومين او نقصان يوم او يومين او لا يوجد زيادة او نقصان لذلك قمت بوضع ComboBox لهذا الأمر.. اكتب التاريخ الميلادي في الحقل الاول ثم اكتب فارق الايام ان وجدت زيادة او نقصان او اتركها صفر كما هي او لم يوجد تغيير السورس كود التطبيق بلغة NET. لمن يريده. Module SEMO_Pa3x '-------------------------------------------------------- 'c0ded bY : SEMO.Pa3x 'skype : security.najaf 'facebook : https://www.facebook.com/Nisr.Aln3jaf 'gmail : isec2090@gmail.com 'last edit : 26/4/2019 '-------------------------------------------------------- Sub Main() For Each arg As String In My.Application.CommandLineArgs If arg.StartsWith("/SEMO/") Then Dim rep As String Dim splt() As String rep = arg.Replace("/SEMO/", "") splt = Split(rep, ",") Dim GET_date, GET_args As String GET_date = splt(0) GET_args = splt(1) Dim ConvertToDate As DateTime ConvertToDate = DateTime.Parse(GET_date) DateFormating(ConvertToDate.AddDays(GET_args)) DateConvert(ConvertToDate.AddDays(GET_args)) Console.WriteLine(ArabicWeekdayString(Weekday(GET_date)) & "," & LongDateString) End If Next End Sub Public LongDateString As String = String.Empty '#Region " DateConverter (dateValue As String) As String " #Region " DateConverter (dateValue As String) As String " Public Function DateConvert(ByVal dateValue As String) As String LongDateString = "" ' الاحتفاظ بالإعدادت الحالية Dim currentCulture As Globalization.CultureInfo = Threading.Thread.CurrentThread.CurrentCulture Dim con As String = "" If DateFormating(dateValue) <> "" Then dateValue = DateFormating(dateValue) '---------------------------------- Dim y As String = IIf(dateValue <> "", dateValue.Split("/")(2), "") Dim mmm() As String If y > "1300" And y < "1451" Then con = GetGregorianDate(dateValue) mmm = Split(GetGregorianDate(dateValue), "/") LongDateString = ArabicWeekdayString(Weekday(GetGregorianDate(dateValue))) & " " & mmm(0) & " " & GregorianMonthString(Val(mmm(1))) & ", " & mmm(2) End If If y > "1883" And y < "2029" Then con = GetHijriDate(dateValue) mmm = Split(con, "/") LongDateString = mmm(0) & "," & HiriMonthString(Val(mmm(1))) & "," & mmm(2) & "H" End If End If ' إستعادة الإعدادت Threading.Thread.CurrentThread.CurrentCulture = currentCulture Return con End Function #End Region #Region " GetHijriDate(GregorianDate As String) As String " Private Function GetHijriDate(ByVal GregorianDate As String) As String Try Threading.Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("ar-eg") Dim hijriDate As String = String.Empty 'Start Date is 10-31-1883 Dim DaysPan As Integer = DateDiff(DateInterval.Day, New System.DateTime(1883, 10, 31), CDate(GregorianDate)) + 1 Dim i As Integer = 0 Do While (DaysPan > 29 + Val(UmmUlquraHijriMonths.Chars(i))) DaysPan = DaysPan - 29 - Val(UmmUlquraHijriMonths.Chars(i)) i = i + 1 Loop hijriDate = Format$(DaysPan, "00") + "/" + Format((i Mod 12) + 1, "00") + "/" + CStr(1301 + (i \ 12)) Return hijriDate Catch ex As Exception ' MessageBox.Show("تأكد من التاريخ الميلادي.", "خطأ في التاريخ الميلادي", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign Or MessageBoxOptions.RtlReading) Return Nothing End Try End Function #End Region #Region " GetGregorianDate(HijriDate As String) As Date " Private Function GetGregorianDate(ByVal HijriDate As String) As String Try Threading.Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("ar-eg") Dim gregorianDate As String = String.Empty Dim MonthsPan As Integer MonthsPan = (12 * (CInt(Mid(HijriDate, 7, 4)) - 1301)) + CInt(Mid(HijriDate, 4, 2)) Dim TempDaysPan As Integer Dim i As Integer For i = 0 To MonthsPan - 2 TempDaysPan = TempDaysPan + 29 + Val(UmmUlquraHijriMonths.Chars(i)) Next i If CInt(Mid(HijriDate, 1, 2)) > 29 + Val(UmmUlquraHijriMonths.Chars(i)) Then ' MessageBox.Show("رقم اليوم لهذا الشهر يجب أن لا يتجاوز 29", "خطأ اليوم الشهري للتاريخ الهجري", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign Or MessageBoxOptions.RtlReading) Return Nothing Else TempDaysPan = TempDaysPan + CInt(Mid(HijriDate, 1, 2)) End If 'Start Date is 10-31-1883 gregorianDate = CStr(DateAdd(DateInterval.Day, TempDaysPan - 1, New System.DateTime(1883, 10, 31))) Return gregorianDate Catch ex As Exception ' MessageBox.Show("تأكد من التاريخ الهجري.", "خطأ في التاريخ الهجري", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign Or MessageBoxOptions.RtlReading) Return Nothing End Try End Function #End Region #Region " UmmUlquraHijriMonths " 'UmmUlquraHijriMonths Private Function UmmUlquraHijriMonths() As String Dim HijriMonthSequence As String = "" 'Create the Months data from 1301H to 1450H - (150years) HijriMonthSequence += "111010010011" 'Year 1301H HijriMonthSequence += "011101001001" 'Year 1302H HijriMonthSequence += "011101100100" 'Year 1303H HijriMonthSequence += "101101101010" 'Year 1304H HijriMonthSequence += "010101110101" 'Year 1305H HijriMonthSequence += "010010110110" 'Year 1306H HijriMonthSequence += "101001010110" 'Year 1307H HijriMonthSequence += "101101001010" 'Year 1308H HijriMonthSequence += "110110100100" 'Year 1309H HijriMonthSequence += "110111010010" 'Year 1310H HijriMonthSequence += "010111011001" 'Year 1311H HijriMonthSequence += "001011011100" 'Year 1312H HijriMonthSequence += "100101011101" 'Year 1313H HijriMonthSequence += "010010101101" 'Year 1314H HijriMonthSequence += "101001010101" 'Year 1315H HijriMonthSequence += "101101001010" 'Year 1316H HijriMonthSequence += "101101101001" 'Year 1317H HijriMonthSequence += "010101110100" 'Year 1318H HijriMonthSequence += "100101110110" 'Year 1319H HijriMonthSequence += "010010110111" 'Year 1320H HijriMonthSequence += "001001010111" 'Year 1321H HijriMonthSequence += "010100101011" 'Year 1322H HijriMonthSequence += "011010010101" 'Year 1323H HijriMonthSequence += "011011001010" 'Year 1324H HijriMonthSequence += "101011010101" 'Year 1325H HijriMonthSequence += "010101011011" 'Year 1326H HijriMonthSequence += "001001011101" 'Year 1327H HijriMonthSequence += "100100101101" 'Year 1328H HijriMonthSequence += "110010010101" 'Year 1329H HijriMonthSequence += "110101001010" 'Year 1330H HijriMonthSequence += "111010100101" 'Year 1331H HijriMonthSequence += "011011010010" 'Year 1332H HijriMonthSequence += "101011010101" 'Year 1333H HijriMonthSequence += "010101011010" 'Year 1334H HijriMonthSequence += "101010101011" 'Year 1335H HijriMonthSequence += "010101001011" 'Year 1336H HijriMonthSequence += "011010100101" 'Year 1337H HijriMonthSequence += "011101010010" 'Year 1338H HijriMonthSequence += "101110101001" 'Year 1339H HijriMonthSequence += "001101110100" 'Year 1340H HijriMonthSequence += "101010110110" 'Year 1341H HijriMonthSequence += "010101010110" 'Year 1342H HijriMonthSequence += "101010101010" 'Year 1343H HijriMonthSequence += "110101010010" 'Year 1344H HijriMonthSequence += "110110101001" 'Year 1345H HijriMonthSequence += "010111010100" 'Year 1346H HijriMonthSequence += "101011101010" 'Year 1347H HijriMonthSequence += "010011011101" 'Year 1348H HijriMonthSequence += "001001101110" 'Year 1349H HijriMonthSequence += "100100101110" 'Year 1350H HijriMonthSequence += "101010100110" 'Year 1351H HijriMonthSequence += "110101010100" 'Year 1352H HijriMonthSequence += "110110101010" 'Year 1353H HijriMonthSequence += "010110110101" 'Year 1354H HijriMonthSequence += "001010110110" 'Year 1355H HijriMonthSequence += "100100110111" 'Year 1356H HijriMonthSequence += "010010011011" 'Year 1357H HijriMonthSequence += "101001001011" 'Year 1358H HijriMonthSequence += "101100100101" 'Year 1359H HijriMonthSequence += "101101010100" 'Year 1360H HijriMonthSequence += "101101101010" 'Year 1361H HijriMonthSequence += "010101101101" 'Year 1362H HijriMonthSequence += "010010101101" 'Year 1363H HijriMonthSequence += "101001010101" 'Year 1364H HijriMonthSequence += "110100100101" 'Year 1365H HijriMonthSequence += "111010010010" 'Year 1366H HijriMonthSequence += "111011001001" 'Year 1367H HijriMonthSequence += "011011010100" 'Year 1368H HijriMonthSequence += "101011101010" 'Year 1369H HijriMonthSequence += "010101101011" 'Year 1370H HijriMonthSequence += "010010101011" 'Year 1371H HijriMonthSequence += "011010010101" 'Year 1372H HijriMonthSequence += "101101001001" 'Year 1373H HijriMonthSequence += "101110100100" 'Year 1374H HijriMonthSequence += "101110110010" 'Year 1375H HijriMonthSequence += "010110110101" 'Year 1376H HijriMonthSequence += "001010111010" 'Year 1377H HijriMonthSequence += "100101011011" 'Year 1378H HijriMonthSequence += "010010101011" 'Year 1379H HijriMonthSequence += "010101010101" 'Year 1380H HijriMonthSequence += "011010110010" 'Year 1381H HijriMonthSequence += "011011011001" 'Year 1382H HijriMonthSequence += "001011101100" 'Year 1383H HijriMonthSequence += "100101101110" 'Year 1384H HijriMonthSequence += "010010101110" 'Year 1385H HijriMonthSequence += "101001010110" 'Year 1386H HijriMonthSequence += "110100101010" 'Year 1387H HijriMonthSequence += "110101010101" 'Year 1388H HijriMonthSequence += "010110101010" 'Year 1389H HijriMonthSequence += "101010110101" 'Year 1390H HijriMonthSequence += "010010111011" 'Year 1391H HijriMonthSequence += "001001011011" 'Year 1392H HijriMonthSequence += "100100101011" 'Year 1393H HijriMonthSequence += "101010010101" 'Year 1394H HijriMonthSequence += "101101001010" 'Year 1395H HijriMonthSequence += "101110100101" 'Year 1396H HijriMonthSequence += "010110101010" 'Year 1397H HijriMonthSequence += "101010110101" 'Year 1398H HijriMonthSequence += "010101010110" 'Year 1399H HijriMonthSequence += "101010010110" 'Year 1400H HijriMonthSequence += "110101001010" 'Year 1401H HijriMonthSequence += "111010100101" 'Year 1402H HijriMonthSequence += "011101010010" 'Year 1403H HijriMonthSequence += "011011101001" 'Year 1404H HijriMonthSequence += "001101101010" 'Year 1405H HijriMonthSequence += "101010101101" 'Year 1406H HijriMonthSequence += "010101010101" 'Year 1407H HijriMonthSequence += "101010100101" 'Year 1408H HijriMonthSequence += "101101010010" 'Year 1409H HijriMonthSequence += "101110101001" 'Year 1410H HijriMonthSequence += "010110110100" 'Year 1411H HijriMonthSequence += "100110111010" 'Year 1412H HijriMonthSequence += "010011011011" 'Year 1413H HijriMonthSequence += "001001011101" 'Year 1414H HijriMonthSequence += "010100101101" 'Year 1415H HijriMonthSequence += "101010100101" 'Year 1416H HijriMonthSequence += "101011010100" 'Year 1417H HijriMonthSequence += "101011101010" 'Year 1418H HijriMonthSequence += "010101101101" 'Year 1419H HijriMonthSequence += "010010111101" 'Year 1420H HijriMonthSequence += "001000111101" 'Year 1421H HijriMonthSequence += "100100011101" 'Year 1422H HijriMonthSequence += "101010010101" 'Year 1423H HijriMonthSequence += "101101001010" 'Year 1424H HijriMonthSequence += "101101011010" 'Year 1425H HijriMonthSequence += "010101101101" 'Year 1426H HijriMonthSequence += "001010110110" 'Year 1427H HijriMonthSequence += "100100111011" 'Year 1428H HijriMonthSequence += "010010011011" 'Year 1429H HijriMonthSequence += "011001010101" 'Year 1430H HijriMonthSequence += "011010101001" 'Year 1431H HijriMonthSequence += "011101010100" 'Year 1432H HijriMonthSequence += "101101101010" 'Year 1433H HijriMonthSequence += "010101101100" 'Year 1434H HijriMonthSequence += "101010101101" 'Year 1435H HijriMonthSequence += "010101010101" 'Year 1436H HijriMonthSequence += "101100101001" 'Year 1437H HijriMonthSequence += "101110010010" 'Year 1438H HijriMonthSequence += "101110101001" 'Year 1439H HijriMonthSequence += "010111010100" 'Year 1440H HijriMonthSequence += "101011011010" 'Year 1441H HijriMonthSequence += "010101011010" 'Year 1442H HijriMonthSequence += "101010101011" 'Year 1443H HijriMonthSequence += "010110010101" 'Year 1444H HijriMonthSequence += "011101001001" 'Year 1445H HijriMonthSequence += "011101100100" 'Year 1446H HijriMonthSequence += "101110101010" 'Year 1447H HijriMonthSequence += "010110110101" 'Year 1448H HijriMonthSequence += "001010110110" 'Year 1449H HijriMonthSequence += "101001010110" 'Year 1450H Return HijriMonthSequence End Function #End Region ' Function DateFormating(ByVal _Date As String) As String #Region " DateFormating( _Date As String) As String " Public Function DateFormating(ByVal _Date As String) As String ' / تجزئة نص التاريخ من الفاصل Dim dt() As String = Split(_Date, "/") '------------------------------------------------------ ' في حالة عدم وجود فاصل تاريخ أصلا فيتم المغادرة If dt.Length <> 3 Then Return "" '------------------------------------------------------ ' التأكد أن أجزاء التاريخ هي أرقام فعلا For i = 0 To dt.Length - 1 If Not IsNumeric(dt(i)) Then Return "" End If Next i '------------------------------------------------------ ' ترتيب التاريخ بحيث يبدأ باليوم وينتهي السنة If Val(dt(0)) > 999 And Val(dt(2)) < 99 Then Dim a As String = Val(dt(0)) Dim b As String = Val(dt(2)) dt(0) = b : dt(2) = a End If '------------------------------------------------------ ' التأكد من عدم تجاوز كل جزء الحدود المسموح له If Val(dt(2)) < 1301 Or Val(dt(2)) > 2029 Then Return "" ' عدم تجاوز الشهر عن 12 If Val(dt(1)) < 1 _ Or Val(dt(1)) > 12 Then Return "" End If ' عدم تجاوز اليوم الهجري عن 30 If Val(dt(2)) >= 1301 _ And Val(dt(2)) <= 1450 Then If Val(dt(0)) < 1 Or Val(dt(0)) > 30 Then Return "" End If '------------------------------------------------------ Dim y As Integer, m As Integer, d As Integer d = Val(dt(0)).ToString("00") m = Val(dt(1)).ToString("00") y = Val(dt(2)).ToString("0000") Return Val(dt(0)).ToString("00") _ & "/" & Val(dt(1)).ToString("00") _ & "/" & Val(dt(2)).ToString("0000") End Function #End Region '#End Region #Region " ArabicWeekdayString " Private Function ArabicWeekdayString(ByVal weekdayValue As Integer) Dim w As String = String.Empty Select Case weekdayValue Case 7 w = "Saturday" Case 1 w = "Sunday" Case 2 w = "Monday" Case 3 w = "Tuesday" Case 4 w = "Wednesday" Case 5 w = "Thursday" Case 6 w = "Friday" End Select Return w End Function #End Region #Region " HiriMonthString " Private Function HiriMonthString(ByVal hijriMonthValue As Integer) Dim m As String = String.Empty Select Case hijriMonthValue Case 1 m = "Muharram" Case 2 m = "Safar" Case 3 m = "Rabi al-Awwal" Case 4 m = "Rabi ath-Thani" Case 5 m = "Jumada al-Ula" Case 6 m = "Jumada al-Akhirah" Case 7 m = "Rajab" Case 8 m = "Shaaban" Case 9 m = "Ramadan" Case 10 m = "Shawwal" Case 11 m = "Dhu al-Qaadah" Case 12 m = "Dhu al-Hijjah" End Select Return m End Function #End Region #Region " GregorianMonthString " Private Function GregorianMonthString(ByVal gregorianMonthValue As Integer) Dim m As String = String.Empty Select Case gregorianMonthValue Case 1 m = "January" Case 2 m = "February" Case 3 m = "March" Case 4 m = "April" Case 5 m = "May" Case 6 m = "June" Case 7 m = "July" Case 8 m = "August" Case 9 m = "September" Case 10 m = "October" Case 11 m = "November" Case 12 m = "December" End Select Return m End Function #End Region End Module ملاحظة: حقوق بعض الاكواد من google ارجو ان ينال موضوعي اعجابكم. حسنين Hijri_SEMO_Pa3x.rar
  10. السلام عليكم، مشروع بسيط كتبتة بلغة NET. واحبب طرحه لكم وهو جلب التاريخ والوقت والطقس لمدينتك الحالية مع امكانية ضبط وقت الحاسوب وتاريخه من خلال البرنامج تحميل السورس كود https://hostr.co/s24IHIYOiLmF تم بحمد الله ، SEMO.Pa3x
  11. [ فهرسة الدورة ، Contents Of The Session ] [ الدرس الاول ] دورة تعلم البرمجة " المستوى المتوسط " الدرس الاول [ الادوات ] [ الدرس الثاني] دورة تعلم البرمجة " المستوى المتوسط " الدرس الثاني [ المتغيرات ] [ الدرس الثالث] دورة تعلم البرمجة " المستوى المتوسط " الدرس الثالث [ الدوال ] [ الدرس الرابع] دورة تعلم البرمجة " المستوى المتوسط " الدرس الرابع [ الفضاءات ] [ الدرس الخامس] دورة تعلم البرمجة " المستوى المتوسط " الدرس الخامس [ الريجستري ] [ الدرس السادس] دورة تعلم البرمجة " المستوى المتوسط " الدرس السادس [ الريسورس ] تم بحمد الله ، SEMO.Pa3x
  12. السلام عليكم، اقدم لكم طريقة بسيطة لإستغلال HttpWebRequest في تخطي الجدار الناري في بعض صفحات الويب لكي تمكنك من التعامل من الموقع الهدف بدون اي اعاقة وصعوبة صورة الجدار لمن لم يفهم قصدي Dim USER As String = "" Dim PASS As String = "" Dim LINK As String = "http://www." Dim request As HttpWebRequest = HttpWebRequest.Create(LINK) request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0" request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" request.Headers.Add("Accept-Language: ar,en-US;q=0.7,en;q=0.3") Dim AuthHeader As String = "Authorization: Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(Convert.ToString(USER & Convert.ToString(":")) & PASS)) & vbCr & vbLf request.Headers.Add(AuthHeader) Dim response As HttpWebResponse = request.GetResponse() Dim DataStream As Stream = response.GetResponseStream() Dim Reader As New StreamReader(DataStream) Dim responsefromserver As String = Reader.ReadToEnd Reader.Close() DataStream.Close() response.Close() MsgBox(responsefromserver) املئ البيانات التالية: USER, PASS, LINK تم بحمد الله ، SEMO.Pa3x
  13. يمكنك التحقق اذا كان النظام حقيقي او وهمي عن طريق مكتبة Management الاستغلال مكتوب بnet. Public Function antiVMBOX() As Boolean '----------------------------------- ' C0ded bY : SEMO.Pa3x ' Date writing : 28/4/2014 :) ' Skype : security.najaf '----------------------------------- Using VM = New System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem") Using BOX = VM.Get() For Each xx In BOX Dim x As String = xx("Manufacturer").ToString().ToLower() If x = "microsoft corporation" OrElse x.Contains("vmware") OrElse xx("Model").ToString() = "VirtualBox" Then MessageBox.Show("Detected using delusional environment", "ERR", MessageBoxButtons.OK, MessageBoxIcon.Stop) End End If Next xx End Using End Using Return False End Function الاستدعاء: ضع في Form_Load antiVMBOX بعد التشغيل: لو كان النظام حقيقي لن يحدث شي وسيتابع البرنامج عمله، اما اذا كان النظام وهمي ستظهر رسالة خطأ + سيغلق البرنامج نفسه هذا التخطي كتبته في 28/4/2014 ملاحظة: لا تنسو اضافة مكتبة system.management.dll في net. بالتوفيق، SEMO
  14. السلام عليكم، كثير من الاخوة لا يعرفون كيفية توزيع الitems بالlistview توضيح الفكرة اكثر: مثال بسيط عبارة processes informations توزيع معلومات العمليات على الجدول شرحت الكم الاكواد حتى يسهل عليكم '---------------------------- ' c0ded bY: SEMO.Pa3x ' Skype : security.najaf '---------------------------- On Error Resume Next Dim NumColum(3) As String ' number colum in your listview Dim LVI As ListViewItem Dim PRC() As Process = Process.GetProcesses For Each xGet In PRC NumColum(0) = xGet.ProcessName ' first colum NumColum(1) = xGet.Id ' second colum NumColum(2) = xGet.MainModule.FileName.ToString ' third colum LVI = New ListViewItem(NumColum) '-------------------------------------------------- ' if you want make ForColor or BackColor just use: '-------------------------------------------------- ' LVI.ForeColor = Color.Black ' LVI.BackColor = Color.Purple ListView1.Items.Add(LVI) Next تم بحمد الله ، SEMO.Pa3x
  15. Protected Overloads Overrides Sub WndProc(ByRef m As Message) Const WM_NCLBUTTONDOWN As Integer = 161 Const WM_SYSCOMMAND As Integer = 274 Const HTCAPTION As Integer = 2 Const SC_MOVE As Integer = 61456 If (m.Msg = WM_SYSCOMMAND) AndAlso (m.WParam.ToInt32() = SC_MOVE) Then Exit Sub End If If (m.Msg = WM_NCLBUTTONDOWN) AndAlso (m.WParam.ToInt32() = HTCAPTION) Then Exit Sub End If MyBase.WndProc(m) End Sub ضع الاكواد في اي مكان في المشروع تم بحمد الله ، SEMO.Pa3x
  16. Public Sub RemoveDuplicates(ByVal lstView As ListView) Dim itemI, itemJ As ListViewItem Dim progress, count As Integer For i As Integer = lstView.Items.Count - 1 To 0 Step -1 itemI = lstView.Items(i) progress = progress + 1 ' start one after hence +1 For z As Integer = i + 1 To lstView.Items.Count - 1 Step 1 itemJ = lstView.Items(z) If itemI.Text = itemJ.Text Then 'duplicate found, now delete duplicate lstView.Items.Remove(itemJ) count = count + 1 Exit For End If Next z Next (i) End Sub الاستدعاء RemoveDuplicates(ListView1) طريقة اخرى Function remover(l As ListView) As Boolean Dim str As String = " " For i As Integer = 0 To l.Items.Count - 1 Try Select Case str.IndexOf("0" & l.Items(i).SubItems(0).Text) = -1 Case False : l.Items(i).Remove() Case True : str &= "0" & l.Items(i).SubItems(0).Text End Select Catch : End Try Next Return True End Function الاستدعاء remover(listview1) تم بحمد الله ، SEMO.Pa3x
  17. [ الموضوع ] ، [ الدرس السادس ، الريسورس، ماهو ، ماهي اقسامة ؟ ، كيف نتعامل معه ؟ ] [ في سلسلة دروس البرمجة ] [ Vb.Net ] [ المستوى المتوسط ] - الريسورس ( Resource ) ماهو ؟ الريسورس / هو عبارة عن حاوية كبيرة لخزن كل شي بداخل برنامجك واستدعائه عن الحاجة مثال ، الثلاجة يوضع فيها الطعام وعندما تحتاج اليه تذهب للثلاجة وتاكلة بمعنى ان الريسورس يوضع فيه اي شيئ" صور ، فيديو ، صوت ، تكست .. الخ " يوجد شيئان مشابهان لعمل الريسورس هما " Settings " + " Registry " كلاهما يستخدم لتخزين القيم واستيرادها عند الحاجة ، والريسورس نفس الشيئ الا هنالك اختلافات بسيطة من اهمها ان الريسورس ، هو لتخزين الملفات بشكل عام لكن بعد التخزين لا يمكنك التعديل عليه ، اي انه بصلاحية " Read Only " قراءة فقط ، فقط يمكنك التعديل عليه اذا امتلكت الكود المصدري " Source Code " هذا هو شرح ، الريسورس بابسط صورة .. " شكل الريسورس " يحتوي على اهم النوافذ وهي " Strings " التي من خلالها نحدد نوع الشيء الذي نريد ادراجة " صورة ، فيديو ، ملف .. الخ " بعدها نضغط على القسم الثاني المسمى " Add Resource " الذي من خلاله نقوم باستيراد الملفات من خلال الامر " Add Existing File " مثال بسيط نقوم باستيراد صورة ، عند الضغط على الامر " Add Existing File " راقبو نافذة " الامتدادات " من هنا يمكننا تغييرها وادراج اي ملف يخطر ببالنا ، كما في الصورة .. اذا حددنا الخيار " All Files " يمكننا ادراج اي نوع من الملفات .. الان ننتقل الى كيفية استدعاء الملفات من الريسورس " ملاحظة " سؤعطي امثلة صغيرة فقط لكي احثكم على متابعة مصادر كثيرة تخص الريسورس " اولا ، استدعاء صورة من الريسورس " حيث المحدد باللون الاصفر ، يكون اسم الصورة التي استوردناها داخل الريسورس " ثانيا ، استدعاء ملف تنفيذي من الريسورس " حيث المحدد باللون الاصفر ، يكون اسم الملف التنفيذي الذي استوردناه داخل الريسورس " لاحظو في المثالين كلمة " ، " WriteAllByte " اي انه يقوم بكتابة الملف من الريسورس الى خارج الريسورس ثم يشغله ، " ثالثا ، استدعاء ملف تكست من الريسورس " حيث المحدد باللون الاصفر ، يكون اسم ملف التكتس الذي استوردناه داخل الريسورس " لاحظو تغير الوضع من ، WriteAllByte الى WriteAllText لانه نص " " رابعا ، استدعاء ملف صوتي من الريسورس " شرط ان يكون الصوت بصيغة " Wav " " خامسا ، استدعاء ملف مضغوط من الريسورس " يقوم بانشاء مجلد بالمسار " \:C " باسم " Security-Najaf " ثم يكتب فيه الملف من الريسورس للمجلد الذي انشاءه بمسار " \:C " هذا شرح بسيط عن التعامل مع الريسورس ، ويمكنكم قراءة المزيد من المصادر ان احببتم تم بحمد الله ، SEMO.Pa3x
  18. [ الموضوع ] ، [ الدرس الخامس، الريجستري ، ماهو ؟ ، ماهي اجزاءه ، كيف نتعامل معه ؟ ] [ في سلسلة دروس البرمجة ] [ Vb.Net ] [ المستوى المتوسط ] - الريجستري ( Registry ) ماهو ؟ الريجستري / هو سجل كبير جدا يحتوي على اعداد كبيرة جدا من المفاتيح والقيم لذا كان لا بد ان يكون منظما بشكل يشبه السجل ، يستعمل الريجستري في تخزين قيم البرامج ، ليسترجعها عند الحاجة ، كيف نحرره ؟ عن طريق اداة تاتي مع النظام تسمى " Regedit " لتشغيلها نذهب الى قائمة " Start " ونكتب " Regedit " [ صورة محرر الريجستري عند التشغيل ] - اجزاء الريجستري ( Parts Registry ) ماهي اجزاءه ؟ اجزاء الريجستري هي التي تظهر على القسم اليمين المتمثلة بالمجلدات ، كما في الصورة 1 - HKEY_CLASSES_ROOT ، يرمز له بـ " ClassesRoot للتعديل عليه كـ حذف ، اضافة ، تعديل .. الخ فانه يحتاج صلاحيات " Adminstrion " 2 - HKEY_CURRENT_USER ، يرمز له بالرمز " CurrentUser " وهو الذي يكون العمل عليه بكثره ، علما يمكنك التعديل على باقي المجلدات لكنها بعضها بشروط والتي ذكرناها ابسطها ، صلاحيات " Adminstrion " 3 - HKEY_LOCAL_MACHINE ، يرمز له بالرمز " LocalMachine " 4 - HKEY_USERS ، يرمز له بالرمز " Users " 5 - HKEY_CURRENT ، يرمز له بالرمز " CurrentConfig " هام جدا / عند التعامل مع الـ " Registry " يجب في بداية الامر ان نكتب في الفضاء [ الان ننتقل الى امور التعديل على الريجستري ] 1 - انشاء مجلد جديد في الجزء الذي اسمه " HKEY_CURRENT_USER " لندرس الكود بصورة ابسط ، نجد انه يتكون من " My " كل كلمة يكون لونها ازرق تسمى كلمة محجوزة اي لا يمكن التعديل عليها " Registry " اشرنا له ان يقوم بالتوجه نحو المحرر ، ثم الى المجلد الثاني الذي يسمى " HKEY_CURRENT_USER " لاحظو لم نكتب الاسم الطويل بل كتبنا رمز المجلد " CurrentUser " ثم كتبنا " CreateSubKey " بمعنى انشا لي مفتاح رايسي اي " Folder " وهنا بين القوسين وضعنا اسم المجلد " DEV-POINT " " آلنَتيجة " - حذف مجلد من الريجستري في الجزء الذي اسمه " HKEY_CURRENT_USER " اضن الامر واضح ، فقد اوضحت تجزءة الاكواد بالجزء الاعلى - انشاء قيمة جديدة داخل مجلد من مجلدات الريجستري داخل الجزء المسمى " HKEY_CURRENT_USER " في عملية انشاء القيم سنتحاج الى ، اسماء اجزاء الريجستري وليس الرموز ، اي سنكتب " HKEY_CURRENT_USER " وليس " CurrentUser " لاحظو كيف انشئ قيمة بداخل المجلد الذي قمنا بانشاءة الذي سميناه " DEV-POINT " - التحقق من قيمة موجودة او لا " تحقق من المجلد " تم بحمد الله ، SEMO.Pa3x
  19. [ الموضوع ] ، [ الدرس الرابع ، الفضاء ، ماهو ؟ ، على ماذا يحتوي ؟ ، كيف نستخدمه ؟ ] [ في سلسلة دروس البرمجة ] [ Vb.Net ] [ المستوى المتوسط ] - المكتبات ( NameSpaces ) ماهي ؟ الفضاء / هو عبارة عن مستودعات كبيرة لخزن الدوال البرمجية التي تساعدنا في بناء مشاريعنا البرمجية ، ماهو " الفضاء البرمجي " من المعروف ان في الحياة اليومية ، توجد مكتبة يقصدها الشخص لكي يستعمل الكتب اذن فالمكتبة تحتوي على الكتب ، اما الفضاء البرمجي يقصدهه المبرمج لكي يستعمل الدوال التي يحتويها ، لماذا وجد الفضاء ؟ لكي تسهل على المبرمج كتابة الاكواد بسهولة واختصارا للوقت ، لو كان العمل بدون فضاء لشائعت الاخطاء الاملائية في الاكواد ولاصبح العمل طويل واصعب ، مثال على الفضاء ، ماهو هذا الفضاء ؟ فضاء عادي حاله كـ حال باقي الفضاءات يحتوي على دوال عديدة من ضمنها دالة " IO " التي تستخدم ، في القراءة .. الكتابة .. الخ اين يمكننا استدعاء الفضاءات ؟ فوق الـ وسنتعرف على الفضاءات اكثر بالدروس القادمة ، والممارسات الكثيرة ان شاء الله تم بحمد الله ، SEMO.Pa3x
  20. [ الموضوع ] ، [ الدرس الثاني ، الثوابت والمتغيرات ، ماهي ؟ ، ما انواعها ؟ ، كيف نحددها ] [ في سلسلة دروس البرمجة ] [ Vb.Net ] [ المستوى المتوسط ] - المتغيرات ( Variables ) ماهي ؟ المتغير / سمي باسم المتغير لانه ياخذ قيمة متغيرة وهي التي تساعدنا في بناء الاكواد البرمجية مثال بسيط للمتغير " عندما تريد ان تحتفظ بالماء فلا بد لك ان تضعه بانية او كاس " اعتبر الكاس متغير ، لانه حجمة ، شكلة ... الخ غير ثابت يسمى متغير والماء هو القيمة التي توضع في المتغير ، وانت تعرف ان اشكال الاواني والكؤوس متغيرة وايضا انواع السؤائل متغيرة ايضا لذا فالمتغيرات تختلف ، بحسب النوع وحجم القيم ، التي تضع فيها ، هذه كـ فكرة عامة عن معنى كلمة " متغير " - انواع المتغيرات ( Type Variables ) ماهي انواعها ؟ - للمتغيرات انواع كثيرة لكننا سنتحاج فقط الاشياءالمتداولة او كثيرة الاستعمال ان صح التعبير ، وتتمثل بـ - النوع الاول [ Integer ] ، وهو متغير ياخذ قيمة رقميه فقط ، تتراوح اعداد الارقام بين " - 2.147.483.648 " الى " 2.147.483.647 " - النوع الثاني [ Long ] ، وهو متغير ياخذ الاعداد الكبيرة جدا - النوع الثالث [ Double ] ، وهو متغير ياخذ قيم كسرية اي تحتوي على الفاصلة " 1,7 x 10308 " الى" 5,0 x 10-324" - النوع الرابع [ String ] ، وهو متغير ياخذ قيم عبارة عن كلمات او جمل او رموز - النوع الخامس [ Date ] ، وهو متغير ياخذ قيم عبارة عن تواريخ و اوقات - النوع السادس [ Boolean ] ، وهو متغير ياخذ قيمتين " نعم او لا " " True Or False " الان بعد ان اخذنا فكرة عامة عن المتغيرات وشرحنا لماذا سميت متغيرات ، وشرحنا ايضا عن انواع المتغيرات ، وتطرقنا الى اكثرها شيوعا ، الان السؤال المهم هو ، كيف نستخدم هذه المتغيرات او كيف نقوم بالتصريح عنها ؟ عالميا كل بداية متغير تكتب قبلها كلمة [ Dim ] اي بداية تعريف السطر ، مثال بسيط سنستخدم به نوع من المتغيرات ليكن مثلا [ String ] لاحظو ماذا كتبت صرحت بداية السطر بالـ [ Dim ] ثم كتبت اسم المتغير [ najaf ] ثم كتبت كلمة [ As ] بمعنى انني اخبرت الفيجوال ان هنالك متغير اسمه [ najaf ] وهذه القيمة تكون [ As ] ، تكون من نوع [ String ] اي تاخذ قيمة كتابية فقط وليس رقميه ، بعدها وضعنا قيمة المتغير [ najaf ] انها [ = ] ، [ Dev-Point ] الان عند محاولة استدعاء المتغير ، ناخذ اسم المتغير وليس قيمة المتغير مثلا بعد ان صرحنا المتغير [ najaf ] انه يحتوي على قيمة نصية [ String ] ويكون اسم القيمة [ Dev-Point ] الان عند الاستدعاء نستدعي فقط المتغير [ najaf ] فيعرض لنا القيمة التي بداخله ، ناخذ مثال ابسط لدينا الان صندوق اسمة [ G ] الصندوق يحتوي على اسم [ najaf ] فعندما نطلب منه ان يعرض لنا قيمة [ G ] يعرض لنا [ najaf ] ، النتيجة بعد استدعاء المتغير [ najaf ] قد عرض لنا القيمة [ Dev-Point ] هذه نتيجة الاستدعاء ، استدعينا القيمة التي تكون بداخل المتغير ستتعرف اكثر على انواع المتغيرات بالتمرن الكثير والممارسة ، ستتقنها جميعها تم بحمد الله ، SEMO.Pa3x
  21. [ الموضوع ] ، [ الدرس الاول ، قائمة الادوات ، ماهي ؟ ، كيف نستخدم ادواتها ؟ ، ماهي الادوات المهمة ؟ ] [ في سلسلة دروس البرمجة ] [ Vb.Net ] [ المستوى المتوسط ] - قائمة الادوات ( ToolBox ) ، ماهي ؟ هي عبارة عن قائمة ، توجد في الجانب الايسر للبرنامج ، تحتوي على " الادوات " التي يتم من خلالها اختيار الادوات التي نحتاجها لانشاء مشروعنا البرمجي ، بعض الاشخاص يقومون باغلاق النافذة بغير قصد فكيف نقوم بارجاعها ؟ نضغط من الكيبورد على [ Ctrl + Alt + X ] - قائمة الادوات ( ToolBox ) ، كيف نستخدم ادواتها ؟ لوضع اي اداة في مشروعنا نقوم بالضغط عليها نقرتان ، او نقوم بالنقر المستمر عليها ومن ثم سحبها الى المشروع - قائمة الادوات ( ToolBox ) ، ماهي الادوات المهمة ؟ من اهم واكثر الادوات شيوعا بالاستخدام لدى كل او اغلب المبرمجين ، تتمثل بالتالي [ Button ] [ زر لتنفيذ الاوامر ] [ TextBox ] [ اداة تكتب فيها معلومات وارقام وحروف ] [ ComboBox ] [ قائمة منسدلة تتحكم بعناصرها ] [ Label ] [ لاظهار النصوص ] [ CheckBox ] [ تستخدم للتحقق ] [ ListView ] [ لعرض البيانات باسلوب متطور ] [ PictureBox ] [ اداة عرض الصور ] [ ProgressBar ] [ شريط الحالة ] [ RadioButon ] [ لتحديد خيار واحد من بين عدة خيارات ] [ Timer ] [ مؤقت ، الزمن ] " ملاحظة " كل اداة عند اختيارها ، يمكن التحكم بخصائصها من النافذة [ Properties ] بالنسبة لباقي الادوات فهي لا تختلف عن هذه الادوات التي شرحناها ، فقط اختلاف بسيط تم بحمد الله ، SEMO.Pa3x 
  22. السلام عليكم, كما واضح في العنوان Module SEMO_Pa3x ' c0ded by: semo.pa3x Sub main() Begin = True End Sub #Region "Timer's Tick " Public t As New Timer Private Sub t_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) '----------------------------- ' write your codes here '----------------------------- End Sub #End Region #Region "Begin Property " Public Property Begin() As Boolean Get If t.Enabled = True Then Return True Else Return False End If End Get Set(ByVal BOOL As Boolean) If BOOL = True Then If Not t.Interval = 50 Then With t AddHandler t.Tick, AddressOf t_Tick .Interval = 1 .Enabled = True .Start() End With Else t.Enabled = True t.Start() End If Else t.Enabled = False t.Stop() End If End Set End Property #End Region End Module
  23. السلام عليكم، احببت ان اوضح لكم اسهل طريقة لجلب مقبض لاي عملية في الدوت نت ما فائدة المقبض؟ بواسطة المقبض سنتمكن من التحكم بالوافذ الاخرى عن طريق winAPI [ الطريقة الاولى: الاسهل والاسرع جلب المقبض عن طريق اسم العملية ] Dim xNameProcess As Process = Process.GetProcessesByName("Process Name")(0) MsgBox(Process.GetProcessById(xNameProcess.Id).Handle) ' SEMO.Pa3x ' Skype: security.najaf استبدل كلمة "Process Name" بإسم عمليتك المراد جلب المقبض لها.. [ الطريقة الثانية: طويلة شوي وايضا تحتاج الى اسم العملية وهي عن طريق دالة OpenProcess ] مثال على استخدام دالتي [ Suspend/Resume Process ] ايقاف العملية واستئناف العملية ' SEMO.Pa3x ' Skype: security.najaf <DllImport("NTDLL")> _ Public Shared Function NtSuspendProcess(ByVal hProc As IntPtr) As IntPtr End Function <DllImport("NTDLL")> _ Public Shared Function NtResumeProcess(ByVal hProc As IntPtr) As IntPtr End Function Sub main() Dim xNameProcess As Process = Process.GetProcessesByName("Process name")(0) ' SuspendProcess NtSuspendProcess(Process.GetProcessById(xNameProcess.Id).Handle) ' ResumeProcess NtResumeProcess(Process.GetProcessById(xNameProcess.Id).Handle) End Sub بالتوفيق.
  24. السلام عليكم: Transparent Label من برمجة SMP3 مثال على الاداة: '----------------------------------- ' Transparent Label By: SMP3 ' Uploader: SEMO.Pa3x '----------------------------------- Imports System.ComponentModel Public Class TransparentLabel Inherits Control #Region " Fields " Dim m_text As String Dim m_style As Integer Dim m_opacity As Double Dim m_Width As Integer Dim m_Height As Integer Dim m_Color As Color Dim m_opacityText As Double Dim m_fillColor As Color = Color.Transparent #End Region #Region "Enum" Enum StyleX Vertical = 270 Horizontal = 90 Normal = 0 End Enum #End Region #Region " Constructor " Public Sub New() SetStyle(ControlStyles.SupportsTransparentBackColor, True) UpdateStyles() m_opacity = 1.0R m_opacityText = 1.0R End Sub #End Region #Region " Property " Public Overrides Property Font() As System.Drawing.Font Get Return MyBase.Font Refresh() End Get Set(ByVal value As System.Drawing.Font) MyBase.Font = value DoUpdate() End Set End Property Property Style() As StyleX Get Style = m_style Refresh() End Get Set(ByVal value As StyleX) m_style = value DoUpdate() End Set End Property <System.ComponentModel.DefaultValue(0.1R)> _ <System.ComponentModel.TypeConverter(GetType(OpacityConverter))> _ <System.ComponentModel.Category("Panel Style")> _ Public Property Opacity() As Double Get Return m_opacity End Get Set(ByVal value As Double) m_opacity = value UpdateStyles() Refresh() End Set End Property <System.ComponentModel.DefaultValue(1.0R)> _ <System.ComponentModel.TypeConverter(GetType(OpacityConverter))> _ <System.ComponentModel.Category("Panel Style")> _ Public Property TextOpacity() As Double Get Return m_opacityText End Get Set(ByVal value As Double) m_opacityText = value UpdateStyles() Refresh() End Set End Property Public Overrides Property Text() As String Get Text = m_text End Get Set(ByVal value As String) m_text = value Refresh() End Set End Property <DefaultValue(GetType(Color), "Transparent")> Overrides Property ForeColor() As System.Drawing.Color Get ForeColor = m_Color End Get Set(ByVal value As System.Drawing.Color) m_Color = value Invalidate() End Set End Property <DefaultValue(GetType(Color), "Transparent")> Overrides Property BackColor() As System.Drawing.Color Get BackColor = m_fillColor End Get Set(ByVal value As System.Drawing.Color) m_fillColor = value Invalidate() End Set End Property <Browsable(False), EditorBrowsable(EditorBrowsableState.Never)> _ Public Overrides Property BackgroundImage() As System.Drawing.Image Get Return Nothing End Get Set(ByVal value As System.Drawing.Image) MyBase.BackgroundImage = value End Set End Property <Browsable(False), EditorBrowsable(EditorBrowsableState.Never)> _ Public Overrides Property BackgroundImageLayout() As System.Windows.Forms.ImageLayout Get Return MyBase.BackgroundImageLayout End Get Set(ByVal value As System.Windows.Forms.ImageLayout) MyBase.BackgroundImageLayout = value End Set End Property #End Region #Region " Event " Protected Sub DoUpdate() Refresh() UpdateStyles() Invalidate() End Sub Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams Get Dim ExStyleX As CreateParams = MyBase.CreateParams() ExStyleX.ExStyle = ExStyleX.ExStyle Or &H20 Return ExStyleX End Get End Property Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs) e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(Opacity * 255, m_fillColor)), ClientRectangle) End Sub Protected Overrides Sub [Select](directed As Boolean, forward As Boolean) 'MyBase.[Select](directed, forward) DoUpdate() End Sub Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) MyBase.OnPaint(e) m_Height = Size.Height m_Width = Size.Width Dim G As Graphics G = e.Graphics Dim y As Single = m_Height Dim x As Single = m_Width Select Case m_style Case 270 G.TranslateTransform(0, y) G.RotateTransform(270) Case 90 G.TranslateTransform(x, 0) G.RotateTransform(90) End Select Dim NSB As New SolidBrush(Color.FromArgb(TextOpacity * 255, m_Color)) G.DrawString(m_text, Font, NSB, 1, 1) End Sub #End Region End Class
  25. اسعد الله اوقاتكم ، الكثير من الاشخاص قد تجاوز مرحلة البداية بلغة [ Net. ] وبقي عائما ان صح التعبير اي بقي تائها ويدور حولة سؤال كيف ساطور نفسي ؟ حسنا جدا ، نحن تجاوزنا مرحلة البداية وهي [ دوال التعامل مع الملفات / قراءة / كتابة .. الخ ] وايضا تعلمنا [ دوال التعامل مع الريجستري / قراءة / كتابة / حذف .. الخ ] وايضا التعامل مع العمليات ، و و و ... الخ الان نمر بمرحلة اكثر تطورا وهي مرحلة دراسة دوال الويندوز [ API ] التي هي اختصار لـ [ Application Programming Interfaces ] التي هي بدورها عبارة عن [ نواة ] لكي تساعد على عمل صلة بين برامجنا والنظام .. قبل الخوض في صلب الموضوع ، سنشاهد بعض الدوال تحتاج شيء يسمى [ مقبض ] فما هو ؟ [ مقبض او "Handle" ] و هناك شيء اخر يسمى اجزاء الدالة وتسمى [ Parameter ] اما المقبض او "Handle" فما هو ؟ ببساطة هو اشبه بالمفتاح او الرقم الذي يساعدنا بالتحكم بنافذة معينة ، اي ان لكل نافذة يوجد مفتاح يسمى مقبض للتحكم بها ، لكن!! هذا الرقم او المفتاح يتغير كلما قمنا بغلق البرنامج وتشغيلة مرة اخرى ويستحيل ان نجد لنافذتين عنوان مقبض متشابه ، ملاحظة // نجد دائما اختصار كلمة مقبض بالشكل الاتي [ hWnd ] ، مثال على دالة .. حسنا جدا ... وكيف ساعرف مقبض النوافذ ؟ وكيف ساقوم باستغلاله ؟ قلنا ان المقبض :- هو مفتاح او رقم موجود بكل نافذة للتحكم بها . حمل هذا البرنامج من برمجتي المتواضعه [ هنا ] [ شكل البرنامج ] شرح استخدام البرنامج ، قمت باحضار مقبض نافذة برنامج [ Process Explorer ] حسنا جدا ، تعلمنا ماهو المقبض وكيف نقوم باحضار مقبض اي نافذة نريدها .. من اين ساحصل على دوال [ API ] لتنفيذ مشاريعي ؟ لدينا اهم موقعين [ Pinvoke ] و [ Msdn ] ، حسنا جدا .. دعونا نطبق على موقع [ Pinvoke ] وناخذ دالة ثم نستدعيها .. لاحظو معي الموقع ، الجانب الايسر يحتوي اسماء المكتبات الاساسية التي تحتوي الدوال وبداخل كل مكتبة عشرات الدوال .. مثلا شاهدو الدوال بمكتبة [ User32.dll ] دعونا نختار دالة ونطبق عليها .. اخترنا الدالة [ CloseWindow ] لاحظو كيف ظهرت الدالة بعدة اشكال .. ظهرت بلغة [ #C ] و [ VB.NET ] على اشكال اثنان واحدة مختصرة .. اي كتبت بصورة مختصرة التي تبدا [ Private Declare .. ] نقوم بنسخ الدالة ونلصقها بمشروعنا ، يرجى الانتباه .. سنقوم بادراج الدالة اعلى المشروع اي تحت منطقة [ Public Class Form1 ] لاحظو براميتر الدالة ماذا يحتاج ياترى ؟ ساترك الاجابة لكم .. ننتقل للجزء الثاني كيف نستدعي هذه الدالة ؟ طيب قم باضافة [ Button ] واكتب بداخله اسم الدالة لاحظو معي الاسم .. نكتب [ CloseWindow ] الذي هو اسم الدالة .. ثم نقوم بفتح قوس[ ) ] لاحظو معي الشرح الذي ظهر لي .. اي انه يخبرك بانه يحتاج ان تمرر له مقبض النافذة .. لقد استخرجنا المقبض سابقا ، اذن نقوم باستخدامه ، شاهدو كيف .. الان جرب البرنامج ، واخبرني النتيجة .. الان نقوم بتجربة داله اخرى ولتكن دالة [ SetWindowText ] لانها تستعمل براميتران واحد لتمرير مقبض والثاني لتمرير الاسم الجديد للنافذة .. يحتاج [ hWnd ] ويحتاج [ String ] لاحظو الاستدعاء .. الاول المقبض والثاني الاسم من نوع [ String ] الان جرب المشروع واخبرني النتيجة .. هذا كان شرح مبسط لدوال [ API ] وطريقة استخدامها ، لكي تطور نفسك اقرا مزيدا من الدروس حولها ، ...
×
×
  • اضف...

Important Information