تبليغاتX
ebook,vb,Delphi,c++,c#,java,book,free,rapidshar,surce,Download,Programing,php,pdf,chm,opengl,Larning,directx,3d,offic,.net,asp,آموزش,سي,برنامه نويسي,وي بي,دلفي,كتاب الكترونيك,پي دي اف,جاوا,كتاب
English سايت ديگر ما Picture Visual Basic Delphi Ebook Forum[2] SiteList صفحه اصلي

خوش آمديد به


كتابخانه مركزي
وبلاگ نويسان

English|فارسي
در كل سايت(In all Page)
آخرين پست ها
download Irrlicht 3d game engine#\/\/:: salam#\/\/:: بدون شرح#\/\/:: کاردانی به کارشناسی#\/\/:: برنامه ساختمان داده#\/\/:: ایبوک#\/\/:: دانلود سورس متور سه بعدی اوگری 3d engin download#\/\/:: جدید#\/\/:: java#\/\/:: new link added#\/\/::

توسط ناصر نيازي درپنجشنبه 10 اسفند1385   9:50 | 

نحوه تولید DLL با ویژوال بیسیک

بعنوان یک زبان برنامه‌نویسی با توسعه سریع، ویژوال بیسیک نظر خیلی از برنامه‌نویسان را از جهت سادگی به خود معطوف کرد. برنامه‌نویسی با ویژوال بیسیک در کمترین زمان صورت می‌گیرد حال آنکه در مقابل زبانهایی چون C و ++C اغلب اوقات به روزها کار مفید نیاز است.
اما بیشترین انتقادی که برنامه‌نویسان از ویژوال بیسیک دارند در این است که قادر به تولید کتابخانه‌های پویا (DLL) نیست. حقیقتا این نظر مورد قبول است که نمی‌توان این نوع فایلها را در کنار فایلهای اجرایی(Exe) یا ActiveX Exe تولید کرد.
در این مقاله ما قصد داریم که نگاه دقیقی به نحوه تولید فایلهای اجرایی در ویژوال بیسیک یندازیم و بعد با طی مراحل ساده‌ای موفق به ایجاد فایلهای DLL بشویم تا از زیر بار این انتقاد نیز رهایی یابیم.
قبلا به این موضوع اشاره شد که فایهای DLL آن دست از برنامه‌هایی هستند که یکبار نوشته می‌شوند و در پروژه‌های بعدی بکرات می‌تواند از آنها استفاده برد. چیزی که هسته ویندور را تشکیل می‌دهد اینگونه فایلها هستند. علاوه بر آن تکنیک‌هایی وجود دارد که شما را قادر می‌سازد تا برنامه‌هایی بنویسید که قادرند خود را بروز برسانند و یا خود ترمیم باشند. بهتر از آن اینکه برنامه‌ای بنویسید که با الحاق اینگونه فایلها بدان قدرت و امکانات جدید بدان افزود. همانند نرم‌افزارهای رایج از جمله Winamp.

کتابخانه‌های پویای قابل اتصال (DLL) چه هستند؟

یک DLL مجموعه‌ای از توابع و پروسه‌هایی است که می‌تواند از برنامه یا DLLهای نظیر خود فراخوانده شود.

استفاده از اینگونه کتابخانه‌های دو مزیت اصلی دارد:
1- امکان به اشتراک گذاری از کد را فراهم می‌سازند. یک DLL می‌تواند مورد استفاده خیلی از برنامه‌های قرار گیرد. بعنوان مثال کتابخانه Win32 API نمونه‌ای از این سری فایلها است. بعلاوه از زمانی که پروسه‌های گوناگون قادر به فراخوانی یک DLL واحد هستند امکان به اشتراک گذاری کد‌ها و روتین‌ها فراهم آمده است. یک فایل DLL تنها یکبار به درون حافظه لود می‌شود و بارها توسط پروسه‌های گوناگونی مورد استفاده قرار می‌گیرد و این یعنی مدیریت حافظه بهتر.

2- مزیت دیگر امکان نوشتن برنامه‌ها بصورت اجزای منفصل است که این اجزا خود قابل تعویض با نگارش‌های جدیدتر جهت توسعه نرم‌افزار خواهند بود بدون اینکه خطی از کد برنامه اصلی دگرگون شود.

با این توصیف فایلهای کتابخانه‌ای درونی که در پروژه‌های مورد استفاده قرار می‌گیرد در صورت تغییر نیاز هست تا پروژه اصلی دوباره کمپایل شود تا بتوان با آن ارتباط بر قرار کرد. اما در DLL ها چون بصورت پویا و قابل انعطاف نوشته شده‌اند این اتصال در بیرون از بدنه اصلی و درست در زمان فراخوانی آن قبیل از متدها و توابع شکل می‌گیرد و این خود تفاوت آشکار از مزیت این گونه از فایلها می‌باشد.همچنین یک فایل DLL می‌تواند حاوی توابعی باشد که فقط مورد استفاده خود هست و از درون به آن دسترسی نخواهیم داشت و آندسته از تابعی را که نیاز هست معرفی می‌کنیم تا از بیرون بدان دسترسی داشته باشیم. در این مرحله نیاز به معرفی در فایلهای Def هست که در پروژه‌های C و C++ مورد استفاده قرار می‌گیرد.

و اما ساختار DLL
فایلهای DLL حاوی یک مدخل شروع انتخابی (optional entry point) و پایانی هستند که در زمانی که توسط برنامه‌های دیگر به درون حافظه لود یا آنلود می‌شوند قابل اجرا است. ویندوز این پروسه را در زمانی که یک برنامه DLLها را بدرون حافظه لود یا آنلود می‌کند اجرا می‌کند.
این دو نوع پروسه به DLL این امکان را می‌دهد که یک سری از مقدمات را پیش از استفاده مهیا کند یا بعد از استفاده پاکسازی نماید. در ویژال بیسیک این تابع بدین گونه تعریف می‌شود:

Public Function DllMain(hinstDLL As Long, fdwReason As Long , lpwReserved As Long) As Boolean

که پارامترهای آن بدین قرارند:
hInstDLL که حاوی یک مقدار یکتا بعنوان دستگیره فایل DLL است.
fdwReason مشخص کننده دلیل فراخوانی این پروسه توسط سیستم‌عامل است که یکی از چهار مقدار زیر را به خود منتصب می‌کند:
DLL_PROCESS_ATTACH (1): یک پروسه در حال لود DLL به دورن حافظه است. هر پیش‌نیاز باید در اینجا شکل گیرد.
DLL_THREAD_ATTACH (2): یک ریسمان (Thread) برای این DLL در حال تولید است. هر پیش‌نیاز برای ایجاد ریسمان در این مرحله می‌تواند شکل بگیرد.
DLL_THREAD_DETACH (3) ریسمان در حال پایان یافتن است. به منظور پاک‌سازی DLL از حافظه.
DLL_PROCESS_DETACH (0) فایل DLL در حال خروح از حافظه است. بمنظور پاک‌سازی سایر کارها توسط برنامه‌نویس امکان انجام در این مرحله فراهم آمده است.

lpvReserved: حاوی مقدار اضافی در استفاده از DLL_PROCESS_ATTACH یا DLL_PROCESS_DETACH می‌باشد.
مقدار برگشتی تابع DllMain در هنگام صدا زدن بصورت DLL_PROCESS_ATTACH مقدار TRUE را باید به خود بگیرد.

در تلاش برای تولید و توسعه یک DLL نمونه قصد این را داریم که یک کتابخانه ریاضی تشکیل دهیم. کد زیر در ماژولی بنام MathLib.Bas قرار می‌گیرد:

Option Explicit
Public Const DLL_PROCESS_DETACH = 0
Public Const DLL_PROCESS_ATTACH = 1
Public Const DLL_THREAD_ATTACH = 2
Public Const DLL_THREAD_DETACH = 3


Public Function DllMain(hInst As Long, fdwReason As Long, lpvReserved As Long) As Boolean
Select Case fdwReason
Case DLL_PROCESS_DETACH
' No per-process cleanup needed
Case DLL_PROCESS_ATTACH
DllMain = True
Case DLL_THREAD_ATTACH
' No per-thread initialization needed
Case DLL_THREAD_DETACH
' No per-thread cleanup needed
End Select
End Function


Public Function Increment(var As Integer) As Integer
If Not IsNumeric(var) Then Err.Raise 5

Increment = var + 1
End Function


Public Function Decrement(var As Integer) As Integer
If Not IsNumeric(var) Then Err.Raise 5

Decrement = var - 1
End Function


Public Function Square(var As Long) As Long
If Not IsNumeric(var) Then Err.Raise 5

Square = var ^ 2
End Function
*******************************

منبع دوست عزیزم

بنام آفريدگار مهربان

ناصر نيازي:اين وبلاگ جهت آموزش ويژوال بيسيك 6 در حد توانم وآدرس جديد ترين كتابهاي الكترونيكي ايجاد كرده ام .من متولد 67 اهل روستاي قايش استان همدان شهرستان رزن هستم اگر سوالي داشتيد بپرسيد .براي استفاده بيشتر از بلاگ به آرشيو حتمآ سر بزنيد
Translator This Page

Archive

آبان 1388

شهریور 1388

خرداد 1388

بهمن 1387

آذر 1387

آبان 1387

مهر 1387

تیر 1387

خرداد 1387

اردیبهشت 1387

فروردین 1387

اسفند 1386

بهمن 1386

دی 1386

آبان 1386

مهر 1386

شهریور 1386

مرداد 1386

خرداد 1386

اردیبهشت 1386

فروردین 1386

اسفند 1385

بهمن 1385

دی 1385

آمار ونظر سنجي

لينك دوستان(MyFrind)

IranJavaScript
مركز برنامه نويسان ايران
علي آقاي خودمون
تكنولوژي اطلاعات
ويژوال بيسيك فارسي
نقدي بر وبلاگها
پخش مستقيم فوتبال
سي پلاس پلاس
موبايل-ويدئو
هوش مصنوعي
محلی برای برنامه نویس های کوچک و بزرگ
مجتبي
طراحي و برنامه نويسي وب
آموزش گام به گام ساخت بازی
پار س کومش
بهترین مجلات و کتب الکترونیک
غروب سحر
فناوری اطلاعات دانشگاه پیام نور گناوه
میکسر یا تا بوده همین بوده
اموزش تخصصي كامپيوتر
University آموزشکده فنی رجایی کاشان
تپش ثانیه ها
اموزش سي پلاس حرفه اي (كنسول)
گرين هورس
انجمن فناوری اطلاعات دانشگاه بیرجند
شلوغ پلوغ(هنگامه)
شبانه
IT Ebook And Electronic Magazin-.Ruby.
پايگاه برنامه نويسي
كتابخانه
free ebook download center
IT WORLD
کدرز هکر
سايت ديگر ما

خبرنامه/طراح

POWERED BY: BLOGFA.COM

طراح قالب :ناصرنيازي

آخرين پست هايم در وبلاگ ديگرم



Mani|Archiv|Mail|OtherSite|Picture|English|RSS


CopyRight:GhayeshSoft 2008 By: NasserNiazy
آكانت پرشين گيگم || کتب اوپن جي ال OpenGL || New Ebook Programing || كتب فارسي || Index of /cbook || بدون عنوان || New Best programing ebook || Ebook New || Ebook New || FarsiEbook || BestEbook || New Post || Programing Ebook || كتابهايي از پرشين گيگ2 || كتابهايي از پرشين گيگ1 || Ebook Link Of Rapidshar || پاسخ به سوالات || Ajax Ebook || Best Free Ebook Of Java || 7 هزار كتاب فارسي || 1662 Programing Ebook || Ebook Link || free Ebook Center 20000 Ebook || کتابخانه فارسي آقاي بشيري || RapidSharEbook Part2 10000 || Free 15000Ebook Of Rapidshare || Programing Ebook Of rapidshare.com || عکس فجيع- || E-Book-Farsi || free Ebook || کتاب جديد || VB6 Ebook || سورس کد هاي وي بي || کتاب || سلام || vb || بازگشت با کتب فارسي || ebook || کتابخانه خارجي || کتاب و کتابخانه || کتابخانه || دلفي || دات نت || بدون شرح(کولاک کردم مگه نه) || کتاب جديد || کتابخانه بي نظير || XML-DELPHI-Java,... || کتابخانه || کتابخانه || کتاب || کتاب و کتابخانه || Linux || کتب جديد || کتاب جديد || کتاب به زبان فارسي || کتابخانه عظيم برنامه نويسي || شاه برنامه || يک پروژه ي گرافيکي-اسکرين سيور || برنامه نويسي سه بعدي -بازي || اي اس پي دات نت || کتاب نو آوردم || کتاب جديد || کتاب کتاب || باز کردن فايل زيپ در دلفي || کتاب بدون شرح || کتاب جديد-جاوا || كتاب || کتاب سي و جاوا || کتاب جديد || فهميدن خاصيت بدون تايمر || معدن کتاب || جاوا اسکريپت || عوض کردن عکس دکمه استارت || برنامه || کتاب کتاب-FTP || کتب-مکتوب-کاتب || کتاب کتاب کتب || عکس عکس عکس || کتب-کاتب-مکتوب || کتاب-کتب || کتاب-کتاب-کتاب || ساخت يک اکتيو ايکس || مجموعه بي نظير پلير || آهنگ فلش براي وب شما || دنياي کلاس و اي پي آي || نوشتن Dllدر وي بي || سه بعدي بدون دايرکت ايکس || آرايه در دلفي || شفاف کردن فرم || سوالات کنکور وي بي 85 || وي بي بازم وي بي || Nero ImageDrive || برنامه || غير فعال کردن كنترل آلت دليت || 2Api بسيار مفيد || سطل آشغال ويندوز خالي كردن || کنترل سي پي يو || پاسخ به سوالات شما-گرافيك || فرمت فايلM3U || کنترل خطا در وي بي|| دايرکت ايکس || کتاب الکترونيک برنامه || فرم ها در وي بي || كتاب 2 || Shellدستور || برخي اپراتور هاي وي بي || کتاب الکترونيک 1 ||