أخي وجدت طريقة أخرى وهي عن طريق قراءة بايتات الملف التنفيذي والملف المطلوب وضعه ودمجهما
ثم كتابتهما إلى ملف أخر
والقراءة قراءة الملف من مثلا البايت 34464 إلى نهاية الملف فيكون لدينا الملف الموضوع داخل الملف التنفيذي لكن يوجد مشكلة بسيطة
وهذا الكود :
Public Class Form1 Structure FileS Dim FileName As String Dim FileByte() As Byte End Structure Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Public Sub WriteToExe(ByVal DesFileName As String, ByVal SouFileName As String) 'هذا الكود ليس له دخل أبدا بالبرنامج 'كود لإضافة ملف إلى ملف تنفيذي Dim S As String = DesFileName Dim B() As Byte = My.Computer.FileSystem.ReadAllBytes(S) Dim F As New FileS F.FileByte = B F.FileName = S Dim Free As Integer = FreeFile() FileOpen(Free, SouFileName, OpenMode.Binary) Seek(Free, FileLen(SouFileName)) FilePut(Free, F) FileClose() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Real() As Byte ' مصفوفة لبايتات الملف الأصلي مهمة Dim FileBytes() As Byte = My.Computer.FileSystem.ReadAllBytes(DesFileName.Text) ' مصفوفة أخرى لبايتات الملف الأصلي Dim ProgBytes() As Byte = My.Computer.FileSystem.ReadAllBytes(Application.ExecutablePath) 'مصفوفة لبايتات الملف التنفيذ 'غرض الكود هو جميع المصفوفتين بحيث الملف الملف 'للملف التنفيذي يكون في الأخر والملف التنفيذي في المقدمة Real = ProgBytes Array.Resize(ProgBytes, ProgBytes.Length + FileBytes.Length) Dim ByteT As Byte Dim B As Integer = -1 For Each ByteT In FileBytes ProgBytes(B + Real.Length) = ByteT B += 1 Next 'كتابة الملف الجديد Dim S As New SaveFileDialog S.Filter = " Exe Files (*.exe)|*.exe" If S.ShowDialog = Windows.Forms.DialogResult.OK Then My.Computer.FileSystem.WriteAllBytes(S.FileName, ProgBytes, True) End If Real.Resize(Real, 0) FileBytes.Resize(FileBytes, 0) ProgBytes.Resize(ProgBytes, 0) End Sub Private Sub BroBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BroBtn.Click Dim S As New OpenFileDialog S.Filter = "All Files (*.*)|*.*" If S.ShowDialog = Windows.Forms.DialogResult.OK Then DesFileName.Text = S.FileName End If End Sub Private Sub SaveToBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToBtn.Click Dim S As New SaveFileDialog 'القراءة وهنا المشكلة تكمن 'يمكن قراءة الملف نظاميا من الملف التنفيذي 'لكننا دمجنا الملفين مع بعض ولم أعد أستطيع 'معرفة من أين أبدأ بقراءة الملف الثاني 'لذا قم بحفظ حجم الملف التنفيذي قبل أي تعديل 'في أي مكان 'داخل الملف التنفيذي - ملف نصي - ملف إعدادات ...... 'الرقم 32768 هو عدد بايتات الملف التنفيذي Dim By() As Byte = My.Computer.FileSystem.ReadAllBytes(Application.ExecutablePath) Dim i As Integer Dim R(By.Length - 32768) As Byte Dim t As Integer = 0 For i = 32768 To By.Length R(t) = By(i - 1) t += 1 Next If S.ShowDialog = Windows.Forms.DialogResult.OK Then My.Computer.FileSystem.WriteAllBytes(S.FileName, R, True) End If End Sub End Class
طبعا يجب كنت أن أعدل كود الكتابة قليلا في المتغير Real لأنه ليس له لزمة لكن لم أجد الوقت
وهذا المثال

