PDA

View Full Version : ساخت Standard DLL در VB6



Mr'Jamshidy
شنبه 10 اردیبهشت 1390, 03:26 صبح
سلام به همه

تا حالا شده بخواهید توی VB بجای ActiveX DLL یک Standard DLL بنویسید؟

که مثلا بجای اینکه موقع برنامه نویسی اون رو به برنامه تون اضا[فه کنید مثل یک API توی برنامه تعریف کنید؟

اول از همه فایل MakeDLL.exe رو از زمیمه دانلود کنید و یک جا از حالت فشرده خارج کنید

69332
حالا 2 تا فایل دارید که خیلی مهمه یکی AddIn و یکی Link
هر 2 تا فایل رو از حالت فشرده خارج کنید

69335 69333
حالا پروژه AddIn رو کامپایل کنین توی شاخه ویبی


69336
بعد خودتون به شاخه ویبی رفته و فایل Link.exe رو پیدا کنید و به L.exe تغییر بدید و پروژه Link رو هم کامپایل کنید توی شاخه ویبی.

خوب اگه همه مراحل رو به درستی انجام داده باشید باید یک گزینه به منو File ویبی اضافه شده باشه
<دیگه جا واسه این یکی عکس نبود!>

خوب حالا نوبت به ساخت DLL میرسه

Mr'Jamshidy
شنبه 10 اردیبهشت 1390, 04:24 صبح
یک نکته مهم اینه که اگر از Class Module, Form یا هر چیزی غیر از Module استفاده کنید موقعی که اون شئ رو لود میکنید برنامه ای که داره از DLL شما استفاده میکنه قفل میکنه <مثلا نمایش یک فرم>

برای ساخت DLL اول باید یک پروژه از نوع Standard EXE بسازید
فرم پیشفرضی که ویبی براتون میسازه رو حذف کنید و یک Module بسازید


Function DLLMain(ByVal A As Long, ByVal B As Long, ByVal c As Long) As Long
DLLMain = 1
End Function

Sub Main()

End Sub


این دو رویه رو اضافه کنید و به کار این ها کار نداشته باشید چئن اگر نباشن DLL کار نمیکنه
سعی کنید تغییرشون هم ندید.

بعد از این که این دو خط رو هم اضافه کردید دیگه هرچی خواستید بنویسید البته در چهارچوب نکات

نکات
1. اول از همه هر چیزی که نوشته میشه حتما حتما حتما باید تعریف بشه هر چیزی
2. اون نکته بالا "از چیزی غیر از Module استفاده نکنید
3. اگر در رویه از مقادیر عددی برای دریافت پارامتر استفاده کنید مشکلی پیش نمیاد اما اگر از رشته(String) استفاده بشه یک مشکلی پیش میاد
اگر رشته ارسالی یا بازگشتی از رویه کمتر از یک کاراکتر بود که خوب بازم مشکلی پیش نمیاد اما اگر غیر از این باشه همه کاراکتر ها ? میشه حالا مشکل این مشکل این طوری حل میشه


Function YourFunction(YourArguments As String) As String
Dim Arg, Ret As String
Arg = StrConv(YourArguments, vbUnicode)
Ret = StrConv(YourArguments, vbFromUnicode)
YourFunction = Ret
End Function


چیز دیگه ای یادم نمیاد اما اگر به مشکل برخوردید بگید تا جایی که بلدم راهنمایی کنم

خوب حالا که DLL تون رو نوشتید نوبت به کامپایل میرسه
خیلی کار ساده ایه
اول از همه باید پروژه یک جایی ذخیره باشه
بعد باید مشخص کنید چه چیز هایی رو میخواهید کاربر بتونه استفاده کنه؟
(مثلا 10 تا رویه نوشتید که 9 تا از رویه ها مکمل یکی از رویه هاست و نیازی نیست تا کاربر بتونه از اون 9 تا استفاده کنه)

برای این منظور به مسیر زیر بروید:

File > Make DLL File > Choose Exports
69337

بعد از این که مشخص کردید باید کامپایل کنید اما کامپایل Standard DLL با کامپایل بقیه فرق داره!
باید از مسیر زیر کامپایلش کنید:

File > Make DLL File > Make DLL File

مسیر رو انتخاب کنید و لذت ببرید :)

Mr'Jamshidy
شنبه 10 اردیبهشت 1390, 05:23 صبح
این DLL رو خودم نوشتم اگه خواستید بگید تا سورسش رو هم بذارم اما کامل نیست!