نمایش نتایج: از شماره 1 تا 5 , از مجموع 5

موضوع: ساخت و ویرایش یک فایل dll.

  1. #1
    مدیر انجمن کامپیوتر
    همديگر را دوست داشته باشيم و بهم احترام بگذاريم
    تاریخ عضویت
    Mar 2012
    محل سکونت
    زیر سایه شما
    نوشته ها
    801
    تشکر تشکر کرده 
    3,495
    تشکر تشکر شده 
    3,460
    تشکر شده در
    796 پست
    حالت من : ShadOsarhal
    قدرت امتیاز دهی
    13719
    Array

    ساخت و ویرایش یک فایل dll.

    سلام به دوستان خوبم

    مدتیه دنبال آموزش ساخت و ویرایش فایلهای dll هستم، قبلاً با استاد شیرین زبان هم مطرح کردم که ایشون فرمودند بزودی در این مورد مطالبی خواهند نوشت.

    فعلاً یه سری آموزشهایی جمع آوری کردم که قرار دادم، امیدوارم برای علاقمندانش مفید باشه!



    فایل DLL چیست ؟


    یه توضیح کوچیک در مورد Dll ها و بعدشم روش ساختن DLL با #C .


    فایل dll یک کتابخونه ازData و Code هست که می تونه در یک زمان توسط چندینApplication مورد استفاده قرار بگیره .
    برای مثال در سیستم عامل Windows فایل Comdlg32.dll عملکرد های مربوط به Dialog Box ها رو انجام میده .
    در نتیجه هر Application ی در ویندوز می تونه از توابعی که توی این dll هستند موقع باز کردن Dialog Box استفاده کنه .
    مزیت اصلی فایل های dll در استفاده مجدد و همینطور استفاده بهتر از حافظه سیستم هست .


    کاربرد dll در برنامه نویسی :
    با استفاده از این فایل های dll میشه برنامه هارو به صورت کاملا Modular و با مولفه های قابل مدیریت نوشت .
    برای مثال یه برنامه Accountig که به صورت Modular نوشته شده می تونه بسیار سریعتر از نمونه مشابه که Modular نوشته نشده اجرا بشه .


    دلیلشم اینه که Module ها به صورت جدا از هم کار می کنند و هر Moduleی که نصب شده باشه در زمان اجرا توی حافظه Load میشه و از یه Module فقط زمانی استفاده میشه که به اون Module احتیاج باشه .


    مزیت دیگه استفاده از Module اینه کهUpdate برنامه خیلی راحت تر انجام میشه و فقط Module مورد نظر Update میشه بدون اثر گذاشتن روی سایر Module ها .


    فایل های زیر در سیستم عامل Windows به عنوان DLL مورد استفاده قرار می گیرند .


    ActiveX Controls (.ocx) files
    مثل کنترل Calendar در ویندوز .


    Control Panel (.cpl) files
    مثل همه Item های موجود در کنترل پنل Windows


    Device Driver Controls (.drv) files
    مثل یک فایل Driver برای یک Printer ...


    خوشبختانه خودWindows مجموعه کاملی از DLL ها رو در اختیار برنامه نویس قرار میده .


    در نتیجه خیلی به ندرت پیش میاد که بخوایم DLL های مورد نیازمون رو خودمون بنویسیم ...


    این کار بیشتر توی پروژه های Game Programing انجام میشه .
    خود من یه بار این کارو امتحانش کردم , تازه فقط ساختنشو ... Debuging و Testing این حرفاش که دیگه بماند ...


    واقعا کار پیچیده ایه ...
    ولی برای آشنایی هم که شده ساختن DLL با VStudio خیلی کوتاه مرور می کنیم .


    ساختن DLL با VStudio:


    به دو روش میشه یه پروژه DLL رو ایجاد کرد :


    1- از طریق Class Library

    2- از طریق Windows Forms Control Library


    ما فقط روی روش اول تمرکز می کنیم .


    در روش اول :


    1- از منوی File گزینه New Project رو انتخاب کنید .


    2- در کادر Project Type گزینه Visual C#.Net رو انتخاب کنید .


    3- بعدش توی کادر Template گزینه Class Library رو انتخاب کنید .


    4- برای پروژه یک اسم و آدرس مشخص کنید .پنجره کد شامل Class1 باز میشود ...در این پنجره میشه کد DLL رو برنامه نویسی کرد .




    در قسمت قبلی رسیدیم به پنجره Class1.cs ...


    1- توی پنجره Class1.cs این قطعه کد رو بنویسید .


    کد:
    // Interface declaration



    public interface ICalculator
    }


    ;( int Add (int Number1 , int Number2
    {

    2- این قطعه رو هم اضافه کنید :


    کد:
    public class ManagedClass:ICalculator
    {
    public int Add(int Number1,int Number2)
    {
    return Number1+Number2;
    {


    {
    این قطعه برنامه خیلی ساده دو عدد رو با هم جمع می کنه .


    3- Vstudio Command Promt رو اجرا کنید .


    حالا باید برای Class Library که در مرحله قبل طراحی شد یه اسم تعیین کنید .


    4- این دستور رو در Command Promt تایپ کنید :


    sn.exe -k MyKeyFile.SNK


    بعدش فایل MyKeyFile.SNK رو در فولدر پروژه کپی کنید .


    5- روی فایلAssemblyInfo.cs دابل کلیک کنید تا در پنجره Solution Explorer باز بشه .
    کد های زیر رو :
    کد:
    [assembly: ComVisible(false)]
    [assembly: AssemblyDelaySign(false)]
    [assembly: AssemblyKeyFile("")]
    با این کدها جایگزین کنید :
    کد:
    [assembly: ComVisible(true)]
    [assembly: AssemblyDelaySign(false)]
    [assembly: AssemblyKeyFile("..\\..\\MyKeyFile.SNK" )]

    در آخر کلید هایCtrl + Shift + B رو بزنید تا فایل DLL تولید شود.


    تمام ...


    خب دیدین که Generate کردن DLL برای یه تابع خیلی ساده هم , کار خیلی پیچیده ایه.


    تازه اونم به مدد MSDN
    و گرنه ساختن یه کتابخونه کامل خیلی سخت تر از این حرفاست .


    البته هنوز حرفی در مورد این که از این DLL چطور میشه استفاده کرد نزدیم ...


    * * * * * * * * *


    Dll مخفف Dynamic Link Library است که استادان سخن از آن با نام کتابخانه پیوندی پویا یاد کرده اند. Dll حقیقتا مشابه یک کتابخانه است بدین صورت که شما کتابهایتان را در کتابخانه قرار می دهید تا بعدا به سهولت آنها را به کار بگیرید یا آنها را در اختیار دیگران قرار دهید Dll هم بر همین اساس در سیستم عامل ویندوز پیاده سازی شده است .با این تفاوت که به جای کتاب توابع خود را در آن ذخیره می کنید .Dll حاوی توابعی است که به منظور خاصی نوشته اید و می خواهید بار ها از آن استفاده کنید و حتی برنامه نویسان دیگر هم می توانند از توابع نوشته شده ی شما استفاده کنند بدون اینکه مالکیت شما بر روی آن توابع نقض شود دقیقا مشابه کتابخانه که هر کسی بنا بر نیاز خود کتابی را از کتابخانه به امانت می گیرد و پس از استفاده، آن را بر می گرداند . تفاوت دیگری که Dll با کتابخانه دارد این است که در آن واحد از یک تابع چند برنامه کاربردی می توانند استفاده کنند این هم به خاطر معماری اشتراک حافظه در سیستم عامل است و محدودیتی در استفاده از تعداد برنامه های تقاضا کننده وجود ندارد مگر اینکه حافظه سیستم جوابگو نباشد. در این مورد فرض کنید که در کتابخانه ای حقیقی به ازای هر درخواست کننده کتاب که نسخه از کتاب بلافاصله از روی نسخه اصلی چاپ شود و به متقاضی داده شود و سپس نسخه اصلی هم در کتابخانه باقی بماند.


    مزیت دیگر Dll این است فایل Dll کامپایل شده می باشد و در نتیجه سورس آن در انحصار نویسنده آن خواهد بود و فقط فایل باینری آن توزیع می شود اما برنامه نویسان دیگر می توانند از Dll استفاده کنند اما جزییات پیاده سازی آن مخفی می ماند.


    Dll ها به خودی خود نمی توانند اجرا شوند و بایستی توسط برنامه های اجرائی (کاربردی ) فراخوانی شوند.

    بنابراین Dll روشی کارا برای :

    1. استفاده مجدد از کد
    2. همکاری بین افراد
    3. و توزیع توابع نوشته شده توسط برنامه نویسان می باشد.
    4. علاوه بر اینها بسیاری از توابع API دستورات مربوط به خود را فقط از طریق Dll انجام می دهند ( برای مبحث Wide Hook)

    بنابراین هر برنامه نویس تحت سیستم عامل ویندوز لازم است تا نحوه نوشتن Dll را بداند . در این مقاله نحوه نوشتن Dll را توسط محیط برنامه نویسی Delphi 7 شرکت بورلند که یکی از بهترین و قوی ترین کامپایلر های موجود است را شرح می دهیم و در مقاله ای دیگر نحوه فرا خوانی Dll را که نوشته ایم توسط یک برنامه ساده نشان می دهیم . بدیهی است این مقاله فقط یک استارت و جرقه می باشد و تسلط کامل بر مبحث به عهده خواننده است.

    نوشتن Dll با Delphi 7:


    محیط برنامه نویسی Delphi 7 را اجرا کنید و از منوی File گزینه NEW و سپس گزینه Other را انتخاب کنید .
    سپس در پنجره ظاهر شده گزینه Dll Wizard را انتخاب کنید و دکمه Open را کلیک کنید.


    پنجره Code Editor ظاهر می شود .
    به اولین خط در این پنجره نگاه کنید . قبلا هنگام نوشتن برنامه های EXE اولین عبارت Program بود اما حالا اولین کلمه library است . Library به کامپایلر می گوید که کد، مربوط به یک پروژه Dll خواهد بود.


    بعد از Library یک سری توضیحات با رنگ آبی نوشته شده است که یک یاد آوری برای برنامه نویس می باشد و هیچ ارزش اجرایی ندارد . اگر زحمتی بایتان ندارد خواندن آن برای یک بار هیچ ضرر مالی و جانی به همراه ندارد و بعدا می توانید آن را حذف کنید تا برنامه تان شلوغ نشود.
    بعد از آن عبارت USES قرار گرفته است . همچنانکه برنامه نویسان محترم مستحضرید!!! این عبارت یونیت های به کار گرفته شده در برنامه را تعیین می کند . به صورت پیش فرض چند یونیت فرا خوانی شده اند اما بسته به کاری که Dll قرار است انجام دهد می توانید یونیت ها را اضافه و کم کنید .برای مثال در صورتی که یکی از توابع Dll قرار است که با رجیستری کار کند در این صورت به یونیت Registry احتیاج پیدا خواهید کرد و باید آن را در لیست Uses اضافه کنید.
    بعد از آن یک راهنمای کامپایلر با رنگ سبز و سپس Begin ,End پروژه قرار دارد .
    در Dll هر کاری که می خواهید انجام شود به صورت تابع بنویسید توابع را قبل از begin,End تعریف کنید.همانطور که قبلا گفتم Dll قدرت این را ندارد که به تنهایی اجرا شود و باید توسط یک برنامه کاربردی یا Dll دیگر فرا خوانی شود.
    خوب حالا کد نویسی را شروع می کنیم . می خواهیم تابعی بنویسیم که با استفاده از یک message Box کلمه hello را نشان دهد. یادآوری می کنم که هدف ما آشنا کردن شما با ساختار یک Dll است .


    چون می خواهیم از Message Box استفاده کنیم و تابع ShopwMessge در یونیت dialogs است بنابراین این یونیت را به لیست Uses اضافه می کنیم.


    قبل از Begin تابع را بدین صورت تعریف می کنیم:


    کد:
    Function showhello:integer;
    Begin
    ShowMessage('Hello!');
    Result:= 0 ;
    End;

    کار دیگری که باید انجام دهیم این است که توابعی را که تعریف کرده ایم برای برنامه های اجرایی قابل دسترس سازیم تا برنامه ها و Dll های دیگر بتوانند از این توابع استفاده کنند . برای این کار از دستورs Export استفاده می کنیم بعد از این دستور لیست توابعی خواهد آمد که می خواهیم از خارج از Dll مورد استفاده قرار گیرند در صورتی که نعداد تابع ها بیشتر از یکی باشد بوسیله کاما آنها را از هم جدا می کنیم.


    کد نویسی تمام شد حال یک Dll ساخته ایم . تنها کاری که باقی مانده است ذخیره Dll در مکان دلخواه و سپس کامپایل کردن آن است . از منو ی File گزینه Save As را انتخاب کنید و پس از انتخاب مکان دلخواه برای ذخیره ی پروژه ، در قسمت نام فایل برای پروژه نام مناسبی انتخاب کنید ما دراینجا eeuok را انتخاب کرده ایم .سپس دکمه ی Save را بزنید در پنجره کد عبارت Library eeuok به جای عبارت قبلی نشان داده می شود. برای کامپایل Dll از منوی Project گزینه Compile All project را انتخاب کنید.


    کد:
    library Project2;


    { Important note about DLL memory management: ShareMem must be the
    first unit in your library's USES clause AND your project's (select
    Project-View Source) USES clause if your DLL exports any procedures or
    functions that pass strings as parameters or function results. This
    applies to all strings passed to and from your DLL--even those that
    are nested in records and classes. ShareMem is the interface unit to
    the BORLNDMM.DLL shared memory manager, which must be deployed along
    with your DLL. To avoid using BORLNDMM.DLL, pass string information
    using PChar or ShortString parameters. }


    uses
    SysUtils,
    dialogs,
    Classes;


    {$R *.res}


    Function showhello:integer;
    Begin
    ShowMessage('Hello!');
    Result:= 0 ;
    End;
    exports showhello;
    begin
    end.

    حال یک Dll آماده دارید.


    استفاده از توابع نوشته شده در dll ، به وسیله برنامه خود را فرا خوانی dll می گویند . همانند تابع که دارای دو step تعریف و فرا خوانی است dll هم دو جنبه تعریف و فراخوانی دارد تعریف dll مقاله قبلی بود و مبحث این مقاله استفاده از تابع قبلی است که همان جنبه فرا خوانی است .


    به دوصورت می توان یک dll را از برنامه فرا خوانی کرد :
    1 – فرا خوانی به صورت استاتیک
    2 - فرا خوانی به صورت پویا یادینامیک


    فرا خوانی استاتیک ساده ترین نوع فرا خوانی است و به کد نویسی زیادی احتیاج ندارد . اما در عوض حافظه سیستم را در طول اجرای برنامه اشغال می کند .در مقابل فرا خوانی پویا به چند خط کد نویسی احتیاج دارد اما در عوض حافظه سیستم توسط برنامه نویس می تواند در طول اجرای برنامه به سیستم بر گردانده شود این از مزیت فرا خوانی پویا است.


    ابتدا فرا خوانی استاتیک را بررسی می کنیم .
    Delphi 7 را اجرا کنید و پروژه جدیدتان را با نام دلخواه در مکان دلخواه ذخیره کنید.سپس یک کپی از dll ای را که قبلا ساختید را در پوشه ای که پروژه تان را ذخیره کردید قرار دهید. البته می توانید dll را در پوشه ی ویندوز یا در پوشه ی system32 نیز قرار دهید این یک مسیر پیش فرض برای سیستم عامل است تا فایل ها ی اجرایی را در آنجا جستجو کند.
    در پنجره کد ادیتور بعد از uses و قبل از type هدر تابعی را که در dll تعریف کرده اید .


    برای مثال ما خط زیر را قرار دهید:


    کد:
    function showhello:integer ; stdcall; external 'eeuok.dll';

    به دو کلمه stdcall و external در تعریف هدر توجه کنید ، stdcall نوع انتقال آرگومان ها را به تابع معین می کند . چند نوع روش انتقال وجود دارد stdcall پارامتر ها را از راست به چپ به تابع ارسال می کند بدون اینکه از رجیستر ها استفاده کند . به دلیل اینکه برنامه اجرایی و تابع فرا خوانی شونده جدا از هم می باشند نحوه ارسال پارامتر ها مهم
    است .

    External به کامپایلر می گوید که تابع باید از یک dll در حافظه قرار گیرد.در صورتی که dll را در مکانهایی که قبلا گفتم قرار نداده اید ذکر مسیر کامل dll بعد از external ضروری است .

    خوب ، کار تمام شد در هر جایی از برنامه که می خواهید می توانید نام تابع را بنویسید و تابع را اجرا کنید .


    ما این کار را در رویداد formcreate انجام دادیم:


    کد:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    showhello;
    end;

    روش اول چون خیلی ساده بود و باعث ایجاد تنوع میشد را نقل کردم. ما تابحال 3 نوع برنامه ایجاد کردیم. کنسولی - ویندوزی - و dll ئی . با مقایسه این 3 نوع برنامه و مشاهده تفاوها و شباهتها حالا بیشتر می دانید که هر کلمه معنای چیست. مثل کلمهlibrary (در پروژه dll ئی ) با program در برنامه ویندوزی در خط اول کد پروژه .
    همچنین مثل usesکه در کنسولی چنین است:
    کد:
    uses
    SysUtils;
    و در نوع dll ئی داریم:


    کد:
    uses
    SysUtils,
    dialogs,
    Classes;

    البته dialogs را خودمان اضافه کردیم چون قرار بود dll ما مسیج باکس را نمایش دهد که جلوه ای دیالوگی بود.
    و در پروژه ای که میانگین 10 عدد را محاسبه می کرد uses چنین بود:
    کد:
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;



    ساخت یک dll با ویژوال سی 6 برای استفاده در ویژوال بیسیک 6:


    ابتدا از منوی فایل گزینه new را بزنید و بعد در پنجره باز شده در تب Projects گزینه Win32 Dynamic-Link Library را بزنید. بعد نامی به پروژه بدهید و مکانش را در هارد مشخص کنید.

    در پنجره بعدی گزینه An empty DLL project را انتخاب کنید.

    بعد بایستی فایلی به پروژه بیافزایید.

    از منوی فایل باز new را بزنید و بعد در تب Files گزینه C++ Source File را انتخاب و نام SampleCode بدهید.


    بعد مراحل بالا را باز برای افزودن فایل دیگری بروید ولی این بار C/C++ Header File را انتخاب کنید. نام فایل را همنام فایل قبلی بدهید.


    برای اضافه کردن فایل بعدی مراحل قبل را تکرار کنید ولی این بار گزینه text file را انتخاب کنید و نام exports.def را به آن بدهید.



    اضافه کردن کدها:
    به فایل SampleCode.h کد زیر را اضافه کنید:
    کد:
    #include <windows.h>
    int nFirstNum;
    int nSecondNum;
    به فایل SampleCode.cpp کد زیر را اضافه کنید:


    کد:
    #include "SampleCode.h"

    //This Function will accept a String And two integers
    //It will display the String in a message box, And Return
    //the sum of the two integers
    //This Is intended As a sample of passing info between
    //c++ And visual basic

    // Function definition
    int __stdcall MyFunction(char *szString, int nFirstNum, int nSecondNum)
    {
    //Display a messagebox With the String (just wanted To show you
    //how To pass a String)
    MessageBox(NULL,szString,"Sample Code", NULL);

    //Return the sum of the two integers. Notice a VB Long Is an Integer
    //in c++.
    return nFirstNum + nSecondNum;
    }
    به فایل exports.def کد زیر را اضافه کنید:
    کد:
    EXPORTS
    MyFunction @1
    کد:
    Additional export functions would be @2, @3, ...


    Build the dll
    دکمه F7 را بزنید یا از منوها :
    Build > Build SampleProj.dll
    بعد این کار در پنجره بیلد باید داشته باشید:
    0 errors and 0 warnings
    یعنی بی خطا اجرا شود.
    حالا در جایی که پروژه را ذخیره کرده اید در پوشه debug فایل dll خود را دارید.
    ایجاد نسخه نهایی یا release
    از منوی Build گزینه Set Active Configurations را بزنید. پنجره ای باز می شود. Release را انتخاب کنید و ok کنید.
    دوباره پروژه را Build کنید.
    این بار در مکان ذخیره پروژه یک پوشه جدید به نام Release ایجاد می شود که باز حاوی فایل dll شماست. که قابل استفاده برای ویژوال بیسیک است.


    استفاده در ویژوال بیسیک 6:


    یک پروژه وی بی استاندارد باز کنید.
    کد زیر را به پنجره کد بیافزایید:
    کد:
    Option Explicit

    'Declare the c++ dll. In the real world you will probably do this
    'in a module. Note the path to your dll might be different than mine.
    'Also note that the values are being passed ByVal
    Private Declare Function MyFunction Lib _
    "c:\pub\sampleproj\debug\SampleProj.dll" (ByVal szString As String, _
    ByVal nFirstNum As Long, ByVal nSecondNum As Long) As Long

    Private Sub Form_Load()
    Dim lngResults As Long
    'call the function. It should display a messagebox with the string
    'which will originate from the dll, and then another messagebox
    'from vb with the total of our two longs
    lngResults = MyFunction("This is a test.", 5, 4)
    MsgBox "The total is " & CStr(lngResults)
    Unload Me
    End Sub

    آدرس فایل dll (قسمت قرمز) را مطابق مسیر فایل و نام فایل بکنید. پروژه وی بی را اجرا کنید.




    * * * * * * *
    ویرایش توسط eDvArDo : 05-01-2012 در ساعت 12:18 PM
    دوستدار هميشگي شما "eDvArDo"

    7n1wj1mlvxoxejezfhye

    دلِ هر ايراني كه براي ايران نمي‌تپد، بهتراست نتپد! (پروفسور حسابي)

    آيا پاسخ سوالي را بدانم بهتر است، يا اينكه ندانسته از دنيا بروم؟! (ابوريحان بيروني)

    پس از سالها جهد و تلاش در كسب علم و معرفت، دانستم كه هيچ ندانستم! (علامه حسن زاده آملي)

  2. 7 کاربر مقابل از eDvArDo عزیز به خاطر این پست مفید تشکر کرده اند.


  3. #2
    مدیر سایت
    دوستتان دارم
    تاریخ عضویت
    Jan 2012
    محل سکونت
    تهران
    نوشته ها
    2,286
    تشکر تشکر کرده 
    4,798
    تشکر تشکر شده 
    13,155
    تشکر شده در
    2,296 پست
    قدرت امتیاز دهی
    45307
    Array

    پیش فرض

    بنام دوست

    واقعا" تاپیکی پرمحتوا و بسیار مفید است و حیفم آمد که بدون قدردانی و صرفا" با زدن کلید سپاس رد شوم.

    [SIGPIC][/SIGPIC]

  4. 6 کاربر مقابل از Magsoud عزیز به خاطر این پست مفید تشکر کرده اند.


  5. #3
    مدیر انجمن کامپیوتر
    همديگر را دوست داشته باشيم و بهم احترام بگذاريم
    تاریخ عضویت
    Mar 2012
    محل سکونت
    زیر سایه شما
    نوشته ها
    801
    تشکر تشکر کرده 
    3,495
    تشکر تشکر شده 
    3,460
    تشکر شده در
    796 پست
    حالت من : ShadOsarhal
    قدرت امتیاز دهی
    13719
    Array

    پیش فرض

    سلام به دوستان خوبم

    استاد عزیز، خوشحالم که قبول فرمودید.

    فقط بازم این سوالمو دوباره مطرح میکنم (چون خیلی کاربردیه):

    آیا وقتی یک فایل dll از طرق مختلف، به محتواش دست پیدا کنیم ( مثلاً اکسترکت با 7z )، پس از ویرایش دلخواه، میشود با روشی مشابه (برعکس اکسترکت) محتوای آن جمع آوری شده و فایل dll جدید ساخته شود؟

    چند سال پیش، روشی ساده آموختم (ویرایش و ساخت Skin یا همون پوسته برای پلیر محبوب KMPlayer ) که با فایل پوسته پلیر همچین کاری کردم و چند پوسته ویرایش کردم.

    سپاس
    دوستدار هميشگي شما "eDvArDo"

    7n1wj1mlvxoxejezfhye

    دلِ هر ايراني كه براي ايران نمي‌تپد، بهتراست نتپد! (پروفسور حسابي)

    آيا پاسخ سوالي را بدانم بهتر است، يا اينكه ندانسته از دنيا بروم؟! (ابوريحان بيروني)

    پس از سالها جهد و تلاش در كسب علم و معرفت، دانستم كه هيچ ندانستم! (علامه حسن زاده آملي)

  6. 6 کاربر مقابل از eDvArDo عزیز به خاطر این پست مفید تشکر کرده اند.


  7. #4
    مدیر سایت
    دوستتان دارم
    تاریخ عضویت
    Jan 2012
    محل سکونت
    تهران
    نوشته ها
    2,286
    تشکر تشکر کرده 
    4,798
    تشکر تشکر شده 
    13,155
    تشکر شده در
    2,296 پست
    قدرت امتیاز دهی
    45307
    Array

    پیش فرض

    بنام دوست

    دوست گرامی همانطور که در تاپیک (چگونه ظاهر ویندوز xp و ویندوز 7 را کاملا بدلخواه خود عوض کنیم.) عرض
    کردم ، میتوانیم محتویات یک فایل DLL یا EXE را اول با برنامه ای مثل Resource Hacker جایی Extract کرده و
    و تغییرات مورد نظرمان را اعمال کنیم و بعد دوباره توسط Resource Hacker فایل های تغییر داده شده را با فایل
    هایی اصلی موجود در داخل فایل DLLو EXE و غیره عوض کنیم.

    و حتی نوشته های موجود در صفحات را هم بهمین ترتیب.

    [SIGPIC][/SIGPIC]

  8. 6 کاربر مقابل از Magsoud عزیز به خاطر این پست مفید تشکر کرده اند.


  9. #5
    مدیر انجمن کامپیوتر
    همديگر را دوست داشته باشيم و بهم احترام بگذاريم
    تاریخ عضویت
    Mar 2012
    محل سکونت
    زیر سایه شما
    نوشته ها
    801
    تشکر تشکر کرده 
    3,495
    تشکر تشکر شده 
    3,460
    تشکر شده در
    796 پست
    حالت من : ShadOsarhal
    قدرت امتیاز دهی
    13719
    Array

    پیش فرض

    سلام به دوستان خوبم

    استاد چقدر من حواس پرتم! درسته، من حواسم نبود که با Resource Hacker میشه علاوه بر EXE فایلهای DLL هم دستکاری کرد!

    آزمایش میکنم، امیدوارم جواب بده

    سپاس
    دوستدار هميشگي شما "eDvArDo"

    7n1wj1mlvxoxejezfhye

    دلِ هر ايراني كه براي ايران نمي‌تپد، بهتراست نتپد! (پروفسور حسابي)

    آيا پاسخ سوالي را بدانم بهتر است، يا اينكه ندانسته از دنيا بروم؟! (ابوريحان بيروني)

    پس از سالها جهد و تلاش در كسب علم و معرفت، دانستم كه هيچ ندانستم! (علامه حسن زاده آملي)

  10. 6 کاربر مقابل از eDvArDo عزیز به خاطر این پست مفید تشکر کرده اند.


علاقه مندی ها (بوک مارک ها)

علاقه مندی ها (بوک مارک ها)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست در پست خود ضمیمه کنید
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

http://www.worldup.ir/