هذا الموضوع مثبت لأهميته.
X
X

شرح صناعة برنامج شبيه للداونلود مانيجر خطوة بخطوة

Collapse
  • تصفية
  • الوقت
  • عرض
مسح الكل
مشاركات جديدة
  • مشرف البرمجة والهندسة العكسية
    • Sep 2018
    • 178







    اللهم لا علم لنا الا ما علمتنا إنك أنت العليم الحكيم

    سلام الله عليكم أخوتي الكرام تحية طيبة وبعد



    حبيت اليوم الخروج من نهج الكراك وصناعته والتوجه للأصل وهو البرمجة

    بموضوع اليوم سنتعلم مع بعضنا البعض كبفية صناعة برنامج علي غرار

    الانترنت داونلود مانيجر (طبعا ليس بعملقته)



    البرنامج سيتم بنائه هنا امامكم بالصور عن طريق الفيجوال استوديو 2012



    وخطوات بنائه ستكون علي النحو التالي :

    1- بناء شكل البرنامج المراد تصميمه

    2- ادخال العناصر جميعا فيه

    3- ربط العناصر بالأكواد









    وعلي بركة الله نبدأ :



    سنقوم بداية ببناء مشروع جديد





























    مرحلة تصميم واجهة البرنامج



















































































    مرحلة ربط الأكواد بالعناصر

















    نتجه الآن لربط الأكواد بشكل عملي



    دبل كلك علي أداة BackgroundWorker1 ثم ادخل هذا الكود




    كود PHP:




    Dim whereToSave As String
    Delegate Sub ChangeTextsSafe
    (ByVal length As Long, ByVal position As Integer, ByVal percent As Integer, ByVal speed As Double)
    Delegate Sub DownloadCompleteSafe(ByVal cancelled As Boolean)
    Private
    Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    Me
    .Button3.Enabled = False
    Dim theResponse
    As HttpWebResponse
    Dim theRequest
    As HttpWebRequest
    Try
    theRequest = WebRequest.Create(Me.TextBox1.Text)
    theResponse = theRequest.GetResponse
    Catch ex As Exception
    MessageBox
    .Show("An error occurred while downloading file. Possibe causes:" & ControlChars.CrLf & _
    "1) File doesn't exist" & ControlChars.CrLf & _
    "2) Remote server error", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
    Me.Invoke(cancelDelegate, True)
    Exit
    Sub
    End
    Try
    Dim length As Long = theResponse.ContentLength
    Dim safedelegate
    As New ChangeTextsSafe(AddressOf ChangeTexts)
    Me.Invoke(safedelegate, length, 0, 0, 0)
    Dim writeStream As New IO.FileStream(Me.whereToSave, IO.FileMode.Create)
    Dim nRead As Integer
    Dim speedtimer
    As New Stopwatch
    Dim currentspeed
    As Double = -1
    Dim readings
    As Integer = 0

    Do
    If
    BackgroundWorker1.CancellationPending Then
    Exit Do
    End If
    speedtimer.Start()
    Dim readBytes(4095) As Byte
    Dim bytesread
    As Integer = theResponse.GetResponseStream.Read(readBytes, 0, 4096)
    nRead += bytesread
    Dim percent
    As Short = (nRead / length) * 100
    Me
    .Invoke(safedelegate, length, nRead, percent, currentspeed)

    If
    bytesread = 0 Then Exit Do
    writeStream.Write(readBytes, 0, bytesread)
    speedtimer.Stop()
    readings += 1

    If readings >= 5 Then
    currentspeed
    = 20480 / (speedtimer.ElapsedMilliseconds / 1000)
    speedtimer.Reset()
    readings = 0
    End
    If
    Loop

    theResponse
    .GetResponseStream.Close()
    writeStream.Close()

    If
    Me.BackgroundWorker1.CancellationPending Then
    IO
    .File.Delete(Me.whereToSave)
    Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
    Me.Invoke(cancelDelegate, True)
    Exit
    Sub
    End
    If

    Dim completeDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
    Me.Invoke(completeDelegate, False)
    End Sub
















    ثم اكتب ورائها هذه الجملة الشرطية الخاصة برابط التحميل وزر التحميل



    كود PHP:




    Public Sub DownloadComplete(ByVal cancelled As Boolean)
    Me.TextBox1.Enabled = True
    Me
    .Button3.Enabled = True

    If cancelled Then
    Me
    .Button5.Enabled = False
    Me
    .label13.Text = "Cancelled"
    MessageBox.Show("Download Cancelled !", "Aborted", MessageBoxButtons.OK, MessageBoxIcon.Information)
    Else

    Me.Button5.Enabled = False
    Me
    .label13.Text = "Successfully downloaded"
    MessageBox.Show("Download Succeded !", "Aborted", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If

    Me.ProgressBar1.Value = 0
    End Sub














    ولحساب سرعة نحميل الملف ضع هذا الكود :



    كود PHP:




    Public Sub ChangeTexts(ByVal length As Long, ByVal position As Integer, ByVal percent As Integer, ByVal speed As Double)

    Me.label12.Text = Math.Round((length / 1024), 2) & " KB"
    Me.label10.Text = Me.TextBox1.Text
    Me
    .label13.Text = Math.Round((position / 1024), 2) & " KB of " & Math.Round((length / 1024), 2) & "KB (" & Me.ProgressBar1.Value & "%)"
    Me.Label15.Text = Me.ProgressBar1.Value & "%"
    If speed = -1 Then
    Me
    .label14.Text = "calculating..."
    Else
    Me.label14.Text = Math.Round((speed / 1024), 2) & " KB/s"
    End If

    Me.ProgressBar1.Value = percent
    End Sub














    اضغط دبل كلك علي زر Save As ثم ادخل هذا الكود






    كود PHP:





    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If TextBox1.Text = "" Then
    SaveFileDialog1
    .Filter = "All File(*.*)--(*.*)"
    ElseIf Me.TextBox1.Text.EndsWith(".exe") Then
    SaveFileDialog1
    .Filter = "Setup File(*.exe)--*.exe"
    ElseIf Me.TextBox1.Text.EndsWith(".rar") Then
    SaveFileDialog1
    .Filter = "RAR File(*.rar)--*.rar"
    ElseIf Me.TextBox1.Text.EndsWith(".zip") Then
    SaveFileDialog1
    .Filter = "ZIP File(*.zip)--*.zip"
    ElseIf Me.TextBox1.Text.EndsWith(".pdf") Then
    SaveFileDialog1
    .Filter = "PDF(*.pdf)--*.pdf"
    End If
    Me.SaveFileDialog1.FileName = Me.TextBox1.Text.Split("/"c)(Me.TextBox1.Text.Split("/"c).Length - 1)
    Me.label9.Text = Me.TextBox1.Text.Split("/"c)(Me.TextBox1.Text.Split("/"c).Length - 1)
    Me.SaveFileDialog1.ShowDialog()
    Me.TextBox2.Text = Me.SaveFileDialog1.FileName
    End Sub












    دبل كلك علي زر Start Dawnload وضع هذا الكود :



    كود PHP:




    Private Sub btDownload_Click(sender As Object, e As EventArgs) Handles Button3.Click
    If Me.TextBox1.Text "" AndAlso Me.TextBox1.Text.StartsWith("http://") Then
    Me
    .whereToSave = Me.TextBox2.Text
    Me
    .SaveFileDialog1.FileName = ""
    Me.TextBox2.Text = whereToSave
    Me
    .TextBox1.Enabled = False
    Me
    .Button3.Enabled = False
    Me
    .Button5.Enabled = True
    Me
    .TextBox2.Enabled = False
    Me
    .Button1.Enabled = False
    Me
    .BackgroundWorker1.RunWorkerAsync()

    Else

    MessageBox.Show("This url is not valid", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
    End If
    End Sub













    دبل كلك زر Cancel ثم ضع هذا الكود :



    كود PHP:




    Private Sub btCancel_Click(sender As Object, e As EventArgs) Handles Button5.Click
    Me
    .BackgroundWorker1.CancelAsync()
    TextBox2.Enabled = True
    Button1
    .Enabled = True
    End Sub

















    دبل كلك زر Exit ثم ضع هذا الكود

    كود PHP:




    Me.Close()















    دبل كلك علي الحقوق (زر about) ثم هذا الكود وغير بالكلام ما تشاء



    كود PHP:




    MsgBox("مقدمة وإهداء من أخوكم ابو فهمي " & vbCrLf & "أتمني ان يحوز علي رضاكم" & vbCrLf & "جميع الحقوق محفوظة " & vbCrLf & "24/1/2015 : تاريخ الإصدار ")















    مرحلة تصدير البرنامج





    سنقوم بحول الله بتصدير البرنامج وعمل ستب له يثبت من أي وندوز

























    والآن لمعاينة العمل بشكل كامل













    البرنامج المصنوع ستجدونه بالمرفقات بالإضافة الي ملف تكست

    يحتوي علي الأكواد المكتوبة
    ... بالحقيقة لم أضع السورس كامل

    حتي تقوموا بكتابتها بأيديكم وبالتالي التعلم بشكل سليم





    هذا كل شيء وعلي المحبة نلتقي بمواضيع أخري بحول الله

    والسلام عليكم ورحمة الله وبركاته





    الملفات المرفقة
  • VIP
    • Nov 2018
    • 6179

    #2
    بارك الله فيك أخي العزيز
  • عضو مُشارك
    • Nov 2018
    • 39

    #3
    شكرا جزيلا أخير الكريم
  • عضو مشارك
    • Sep 2018
    • 77

    #4
    رائع جدا أخي الكريم
    حجزاك الله خيرا وبورك فيك على هذا العمل الرائع
    تحياتي
  • مشرف قسم الأندرويد
    • Nov 2018
    • 241

    #5
    الشرح بالطريقة دي افاد جدا والله شكرا لكم
Working...
X