View Full Version : وارد کردن در ریسورس برنامه داخل ریسورس برنامه اصلی
  
سید حمید حق پرست
یک شنبه 28 اسفند 1390, 23:53 عصر
سلام
توضیح کامل :
2 برنامه نوشتیم . برنامه1 و برنامه2 ، حالا برنامه1 رو در رسورس برنامه2 قرار میدم ، بعد کمپایل میکنم
حالا من میخوام برنامه که دست کاربر میوفته هر فایلی انتخاب میکنه بره داخل ریسورس برنامه ی1 که در برنامه1 در ریسورس برنامه2 هست
ممنون میشم راهنماییم کنید
یا علی (ع)
بهروز عباسی
یک شنبه 28 اسفند 1390, 23:57 عصر
ببین این نمونه به دردت میخوره
84392
setroyd
دوشنبه 29 اسفند 1390, 00:29 صبح
نمیشه ! مگر اینکه فایل رو  open کنی و بیت به بیت بخونی و جایگزین کنی .
سید حمید حق پرست
دوشنبه 29 اسفند 1390, 00:31 صبح
ممنون . میشه یه توضیح بدید که چکار میکنه این برنامه؟
بازم ممنون
یا علی (ع)
سید حمید حق پرست
دوشنبه 29 اسفند 1390, 00:32 صبح
من میخوام ستاب ساز بسازم . مشکلم در قرار دادن فایلهاست
راستی وقتی کمپایل میکنم سیستم به ویروس میشناسه .
من یکی میخوام که به ویروس نشناسه چون برنامم وارد بازار بشه این باعث میشه کسی نتونه نصب کنه و میگن ویروسه
یا علی (ع)
بهروز عباسی
دوشنبه 29 اسفند 1390, 00:35 صبح
ممنون . میشه یه توضیح بدید که چکار میکنه این برنامه؟
اگه با منی خواهش میکنم سورس کد رو ببینی به صورت فینگلیش توضیح داده
سید حمید حق پرست
دوشنبه 29 اسفند 1390, 00:54 صبح
اگه با منی خواهش میکنم سورس کد رو ببینی به صورت فینگلیش توضیح داده
 اره دوست عزیز ممنون ولی انتی ویروس نمیزار اجرا بشه و کمپایل که میکنم حذف میشه
همونطور که گفتم میخوام ستاب ساز بسازم که اینجاش گیر کردم . برای قسمتی که کاربر پروژشه ی کمپایل شده رو به برنامه میخواد اضافه کنه تا ستابشو بسازه . ستاب سازهای دیگه پس از چی استفاده میکنن بجز ریسورس راه دیگه ای هست؟
ممنون میشم راهنماییم کنید
یا علی (ع)
setroyd
دوشنبه 29 اسفند 1390, 00:59 صبح
اره اضافه کردن برنامه انتهای فایل exe مثل winrar و..... اخه با vb یکم سخته ولی شدنیه اونم با open کردن فایل فکر نم بشه بخونی و بنویسی اطلاعات رو داخلش من خودم قبلا یه تاپیک در این باره زدم ولی بی جواب موند
بهروز عباسی
دوشنبه 29 اسفند 1390, 01:05 صبح
ولی انتی ویروس نمیزار اجرا بشه و کمپایل که میکنم حذف میشه؟
منم نفهمیدم چرا هر برنامه ای باVb نوشتم که ریسورس داشت آنتی ویروس هم قد علم میکرد.
همونطور که گفتم میخوام ستاب ساز بسازم که اینجاش گیر کردم . برای قسمتی که  کاربر پروژشه ی کمپایل شده رو به برنامه میخواد اضافه کنه تا ستابشو بسازه  . ستاب سازهای دیگه پس از چی استفاده میکنن بجز ریسورس راه دیگه ای هست؟
راه دیگه بعضی فکر کنم فایل هاروی خودشون مینوسن چون وقتی فایلهای ستاپ رو با برنامه مثلاًResource Hacker 3.4یاPE Explorer باز میکنم خبری از ریسورس نیست اگه دلفی بلد باشی یه نمونه open source تویه سایت هست در بخش Open Source
بهروز عباسی
دوشنبه 29 اسفند 1390, 01:14 صبح
ولی انتی ویروس نمیزار اجرا بشه و کمپایل که میکنم حذف میشه؟ 			 		
آنتی ویروست رو غیر فعال کن برنامه امنو امانه این برنامه با کمی تغییر میتونه چیزی باشه که میخوای (البته خیلی ساده اصل ایدشه)
بهروز عباسی
دوشنبه 29 اسفند 1390, 01:20 صبح
اره اضافه کردن برنامه انتهای فایل exe مثل winrar و..... اخه با vb یکم سخته ولی شدنیه اونم با open کردن فایل فکر نم بشه بخونی و بنویسی اطلاعات رو داخلش من خودم قبلا یه تاپیک در این باره زدم ولی بی جواب موند
 توی کدی گذاشتم دقیقاًفایلی که داخل ریسورس قرار میگیره اطلاعات رو از آخر خودش میخونه
Public Sub Main()
On Error Resume Next 'har khatai pish biad khate badi(code badi) ejra mishe.
                     ' dar vaghe on khate khatadar ro bikhial mishim :D
    Open App.Path + "\" + App.EXEName + ".exe" For Binary As #4 'file ro baz mikonim
        Get #4, LOF(4) - 3, BeginP '3taye akhar ro mikhunm
        Seek #4, BeginP    'be andaze oon 3ta tu file az aval jelo mirim
        Get #4, , varData  ' hala inai ke gerefte mishe propertyage(az noe variant)
                            'age ye bar dige in amalo tekrar konim on 3taie akhar ro migirim
        DataBag.Contents = varData 'dadehai ke gereftim variant bud mirizimesh tu ye moteghaiere property bag
    Close #4 'fekr konam ba in bastamesh :D
سید حمید حق پرست
دوشنبه 29 اسفند 1390, 02:35 صبح
توی کدی گذاشتم دقیقاًفایلی که داخل ریسورس قرار میگیره اطلاعات رو از آخر خودش میخونه
Public Sub Main()
On Error Resume Next 'har khatai pish biad khate badi(code badi) ejra mishe.
                     ' dar vaghe on khate khatadar ro bikhial mishim :D
    Open App.Path + "\" + App.EXEName + ".exe" For Binary As #4 'file ro baz mikonim
        Get #4, LOF(4) - 3, BeginP '3taye akhar ro mikhunm
        Seek #4, BeginP    'be andaze oon 3ta tu file az aval jelo mirim
        Get #4, , varData  ' hala inai ke gerefte mishe propertyage(az noe variant)
                            'age ye bar dige in amalo tekrar konim on 3taie akhar ro migirim
        DataBag.Contents = varData 'dadehai ke gereftim variant bud mirizimesh tu ye moteghaiere property bag
    Close #4 'fekr konam ba in bastamesh :D
 
والا از سورس زیاد متوجه نشدم . هرچند توضیح کامل دادید
یا علی (ع)
بهروز عباسی
دوشنبه 29 اسفند 1390, 02:52 صبح
والا از سورس زیاد متوجه نشدم . هرچند توضیح کامل دادید
شماباید فایل کامل برنامه رو ببینی این تکه کدرو در جواب دوستمون گفتم(بخش کوچکی از فایل اصلی)
الان که چشمام تقرباً از جمجمم خارج شده چند دقیقه دیگه به مونیتور نگاه کنم ممکنه دود بشن برن هوا همین روزا یک فایل pdf آموزسی توپ دراین باره(این برنامه )باتوضیح کامل برات میذارم
یاشاید چیز بهتری گیر آوردم
سید حمید حق پرست
دوشنبه 29 اسفند 1390, 11:45 صبح
دوباره سلام
من انتی رو غیر فعال کردم و تونستم برنامه رو کمپایل کنم اما هنگامی که اجرا کردم انتی حذفش کرد . نمیدونم چشه:گریه:
یا علی (ع)
setroyd
سه شنبه 01 فروردین 1391, 02:30 صبح
دوست عزیز کدی که شما گذاشتی هوشمند نیست و قادر به جدا سازی نیست و نمیتونه چند فایل رو در بر بگیره به صورت جدا جدا و دوباره برگردونه این کدی که اخرش اضافه میشه کاری نداره با یکی باز کن فایل رو با یکی بخون و اخر اون اضافه کن ولی اگه بتونی این کاری که گفتم بکنی عالی میشه مثل winrar فقط با این تفاوت که این برنامه حجم رو کاهش نمیده .  اگه دیدی میتونی یه تاپیک بزن در این باره شروع کنیم و به نتایج خوبی برسیم .
بهروز عباسی
سه شنبه 01 فروردین 1391, 03:49 صبح
دوست عزیز کدی که شما گذاشتی هوشمند نیست و قادر به جدا سازی نیست و نمیتونه چند فایل رو در بر بگیره به صورت جدا جدا و دوباره برگردونه این کدی که اخرش اضافه میشه کاری نداره با یکی باز کن فایل رو با یکی بخون و اخر اون اضافه کن ولی اگه بتونی این کاری که گفتم بکنی عالی میشه مثل winrar فقط با این تفاوت که این برنامه حجم رو کاهش نمیده .  اگه دیدی میتونی یه تاپیک بزن در این باره شروع کنیم و به نتایج خوبی برسیم .
 خوش حال میشم کمکی کنم
اما winrar فایلها رو توی یه فایل دیگه میریزه ته روی خودش مثلاً برای فایلهای .sfx که خودکار اجرا میشن از فایلDefault.SFX استفاده میکنه
درمورد فشرده سازیم بگم فکر نکنم زیاد سخت باشه (استفاده از کدهای آماده) اما اگه بخوایم خودمون آلگوریتمی برای فشرده سازی پیاده کنیم سخت میشه 
من الان (تقریباً 5 روز)وقتم پره اگه میتونید کمی در این باره تحقیق کنید تا باهم کارو شروع کنیم
بهروز عباسی
سه شنبه 01 فروردین 1391, 03:59 صبح
دوباره سلام
من انتی رو غیر فعال کردم و تونستم برنامه رو کمپایل کنم اما هنگامی که اجرا کردم انتی حذفش کرد . نمیدونم چشه:گریه:
یا علی (ع)
شرمنده منم هر چی با آنتی ویروسها جنگ و جدل کردم به جای نرسیدم بهش گیر میدن:کف:
سید حمید حق پرست
سه شنبه 01 فروردین 1391, 04:39 صبح
دوستان ممنون از توحهتون به این تاپیک
من میخوام یه ستاپ ساز بسازم و روش وارد کردن فایلها در EXE مهم نیست فقط یه روش شدنی باشه
من فقط اینو مشکل دارم و بقیشو میدونم
دوستن اگه راهنماییم کنید ممنونتون میشم:قلب:
یا علی (ع)
بهروز عباسی
سه شنبه 01 فروردین 1391, 04:56 صبح
دوستان ممنون از توحهتون به این تاپیک
من میخوام یه ستاپ ساز بسازم و روش وارد کردن فایلها در EXE مهم نیست فقط یه روش شدنی باشه
من فقط اینو مشکل دارم و بقیشو میدونم
دوستن اگه راهنماییم کنید ممنونتون میشم:قلب:
یا علی (ع)
قربانت دوست عزیز الان تقریبن عیده اول عیدت مبارک انشا الله سال خوبی برای شما و دیگر دوستان باشه
این که شما میگی کمی سخته(باریسورس)من هر کاری که به ذهنم رسید کردم اننتی ویروس...
یه راه دیگه هست انم اینکه:
مثل برنامه های ویروس میکر و ازاین قبیل یک برنامه editorیاcreator داشته باشیم که فایلهارو بوسیله اون داخل برنامه دیگه ای که در اصل همون فایلی که روند نصب رو انجام میده بریزیم
اگه کارت با راه حل دوم راه میفته میشه کاریش کرد
یا نه همون روش اول فقط برای اجرا آنتی ویروس پخ بشه :لبخند:
بهروز عباسی
سه شنبه 01 فروردین 1391, 06:25 صبح
اینم کد اول کد زیرو توی یه ماژول بنویس توی هردو پروزه استفاده کن
Public Type FileAddress
    FADD_1  As String
    FADD_2  As String
    FADD_3  As String
    FADD_4  As String
End Type
Public Type FileData
    FData_1  As String
    FData_2  As String
    FData_3  As String
    FData_4  As String
End Type
Public Type FileName
    FName_1  As String
    FName_2  As String
    FName_3  As String
    FName_4  As String
End Type
Public FADD As FileAddress
Public FData As FileData
Public FName As FileName
Public DataBag As New PropertyBag
کدبالا کد مشترک بین فایل creatorوبرنامه اصلی بود 
کدزیر هم درون ماژون برنامه creator بنویس
برای استفاده کافیه تابع  CREATING رو فراخوانی کنی
اینم کد برنامه creator که چهارتا فایل(توی این مثال 4تا فایل موسیقی که کنار پروزه بود)رو میریزه داخل برنامه بعدی
Public STR_Build_Path As String
Function Fnamerev(ByVal StrA As String) As String
    Fnamerev = StrReverse(StrA)
    Fnamerev = Left(Fnamerev, InStr(1, Fnamerev, "\") - 1)
    Fnamerev = StrReverse(Fnamerev)
End Function
 
 Public Sub CREATING()
  On Error GoTo eRR:
   With FADD
    .FADD_1 = App.Path & "\FA.mp3"
    .FADD_2 = App.Path & "\FB.mp3"
    .FADD_3 = App.Path & "\FC.mp3"
    .FADD_4 = App.Path & "\FD.mp3"
   End With
   
    Open FADD.FADD_1 For Binary As #1
     Open FADD.FADD_2 For Binary As #2
      Open FADD.FADD_3 For Binary As #3
       Open FADD.FADD_4 For Binary As #4
            With FData
             .FData_1 = Space$(FileLen(FADD.FADD_1))
             .FData_2 = Space$(FileLen(FADD.FADD_2))
             .FData_3 = Space$(FileLen(FADD.FADD_3))
             .FData_4 = Space$(FileLen(FADD.FADD_4))
            End With
       Get #1, , FData.FData_1
     Get #2, , FData.FData_2
   Get #3, , FData.FData_3
  Get #4, , FData.FData_4
Close
 With FName
   .FName_1 = Fnamerev(FADD.FADD_1)
   .FName_2 = Fnamerev(FADD.FADD_2)
   .FName_3 = Fnamerev(FADD.FADD_3)
   .FName_4 = Fnamerev(FADD.FADD_4)
 End With
 
    DataBag.WriteProperty "FNameF1", FName.FName_1
    DataBag.WriteProperty "FNameF2", FName.FName_2
    DataBag.WriteProperty "FNameF3", FName.FName_3
    DataBag.WriteProperty "FNameF4", FName.FName_4
    DataBag.WriteProperty "File1", FData.FData_1
    DataBag.WriteProperty "File2", FData.FData_2
    DataBag.WriteProperty "File3", FData.FData_3
    DataBag.WriteProperty "File4", FData.FData_4
    
 STR_Build_Path = App.Path & "\" & "Test.exe"
 
    Dim BeginP As Long
    Dim varData As Variant
    Open STR_Build_Path For Binary As #5
        BeginP = LOF(5)
        varData = DataBag.Contents
        Seek #5, LOF(5)
        Put #5, , varData
        Put #5, , BeginP
    Close #5
    MsgBox "File Successfuls Builded", vbApplicationModal + vbInformation, "Finish"
    Exit Sub
eRR:
MsgBox eRR.Description, vbExclamation, "Error " & eRR.Number
End
End Sub
بهروز عباسی
سه شنبه 01 فروردین 1391, 06:30 صبح
اینم کد برنامه اصلی که فایل ها داخلشه اگه خواستی میتونی این فایل رو کامپایل کنی و با ریسورس به برنامه الحاق کنی بعد با تابع زیر از ریسورس خارجش کنی:لبخند:
Public Sub RES_Extract(ID_Ressource As String, Typ_Ressource As String, FileName As String)
  Dim sType As String
  Dim lFile As Long
  Dim lID As Long
  Dim Mt() As Byte
  On Error Resume Next
  lFile = FreeFile
  Open FileName For Binary As #lFile
    lID = CLng(ID_Ressource)
    sType = Typ_Ressource
    Mt = LoadResData(lID, sType)
    Put #lFile, , Mt()
  Close #lFile
End Sub
 واین کد روبا کد زیر عوض کنی  STR_Build_Path = App.Path & "\" & "Test.exe"
با این
RES_Extract "101", "custom", STR_Build_Path
کد برنامه :
Public Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, _
                                                                         ByVal lpBuffer As String) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
                                                                              ByVal lpOperation As String, _
                                                                              ByVal lpFile As String, _
                                                                              ByVal lpParameters As String, _
                                                                              ByVal lpDirectory As String, _
                                                                              ByVal nShowCmd As Long) As Long
Public Const SW_SHOW = 5
Public TempDir As String
Public BeginP As Long
Public varData As Variant
Public DataBag As New PropertyBag
Public Sub Main()
On Error Resume Next
    Open App.Path + "\" + App.EXEName + ".exe" For Binary As #4
        Get #4, LOF(4) - 3, BeginP
        Seek #4, BeginP
        Get #4, , varData
        DataBag.Contents = varData
    Close #4
    TempDir = Space(255)
    GetTempPath 255, TempDir
    TempDir = Trim(TempDir)
    TempDir = Left(TempDir, Len(TempDir) - 1)
    Open TempDir & DataBag.ReadProperty("FNameF1") For Binary As #1
    Open TempDir & DataBag.ReadProperty("FNameF2") For Binary As #2
    Open TempDir & DataBag.ReadProperty("FNameF3") For Binary As #3
    Open TempDir & DataBag.ReadProperty("FNameF4") For Binary As #4
   With FData
    .FData_1 = DataBag.ReadProperty("File1")
    .FData_2 = DataBag.ReadProperty("File2")
    .FData_3 = DataBag.ReadProperty("File3")
    .FData_4 = DataBag.ReadProperty("File4")
   End With
    Put #1, , FData.FData_1
    Put #2, , FData.FData_2
    Put #3, , FData.FData_3
    Put #4, , FData.FData_4
Close
    ShellExecute ByVal 0, "open", TempDir & DataBag.ReadProperty("FNameF1"), vbNullString, vbNullString, SW_SHOW
    ShellExecute ByVal 0, "open", TempDir & DataBag.ReadProperty("FNameF2"), vbNullString, vbNullString, SW_SHOW
    ShellExecute ByVal 0, "open", TempDir & DataBag.ReadProperty("FNameF3"), vbNullString, vbNullString, SW_SHOW
    ShellExecute ByVal 0, "open", TempDir & DataBag.ReadProperty("FNameF4"), vbNullString, vbNullString, SW_SHOW
End Sub
بهروز عباسی
سه شنبه 01 فروردین 1391, 06:40 صبح
راستی توی این مثال باید برنامه بالا رو که کامپایل کردی اسمش رو به این نام (test.exe) تغییر بدی 
به این خاطر: STR_Build_Path = App.Path & "\" & "Test.exe"
بهروز عباسی
سه شنبه 01 فروردین 1391, 06:50 صبح
کمی توضیح:
بالا گفتم(یادم نبود:کف:)
واین کد روبا کد زیر عوض کنی 
 STR_Build_Path = App.Path & "\" & "Test.exe"
با این
 RES_Extract "101", "custom", STR_Build_Path
منظور این کد اینه که برنامه روی فایل ریسورس بنویسه و باید بصورت دستی(به اختیارخودت) مقدار بگیره 
STR_Build_Pathومیگم 
امید وارم این به کارت بیاد
ساعتم میگه دیر وقته بخواب:گیج: اما خورشید میگه پاشو بابا عیده:لبخند:
فعلاً یا علی
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.