سلاموخسته نباشید به ویژه خدمت استادمون
the_king
من تازه شروع به ساختن dll با ویژوال بیسیک کردم.اما مشکلی دارم اون هم این هست که من نرمافزارهایی دیدم که کنار فایل اجرایشون فایل dll وجود داره و از اون استفاده میکنن بدون نیاز به رجیستر کردن فایل dll.الان من با اکتیوکس دی لل dll ساختم اما برای اینکه ازش استفاده کنم باید رجیستر بشه.الان چه طوری دی لل بسازم که نیاز به رجیستر نداشته باشه.یا ترفند دیگه.مرسی از توجهتون به سوالات.من اولش کلی سرچ میکنم.
پسوند فایل DLL مختص ActiveX ها نیست، همانطور که همه ActiveX ها هم DLL نیستند. مخصوصا در مورد زبان هایی مثل ++C خیلی از کتابخانه ها پسوند DLL دارند اما
اینها ActiveX نیستند و طبیعتا نیازی هم به ثبت شدن در Registry ویندوز ندارند.
وقتی شما در یک پروژه ای از ActiveX تون استفاده می کنید مسیر یا اسم فایل dll ذخیره نمیشه، بلکه از شماره شناسایی
ActiveX تون که بهش GUID یا Globally Unique Identifier می گویند استفاده میشه. از اونجایی که موقع اجرای برنامه
از اون ActiveX صرفا GUID مشخصه، ویندوز در Registry ویندوز می گرده تا ببینه اون GUID برای چه فایلی و در چه محلی ثبت شده.
شما می توانید برای فایل dll و exe پروژه تون اطلاعات Manifest اضافه کنید تا دیگه ویندوز XP (و جدیدتر از آن) سراغ Registry نره و نیازی به ثبت کردن
ActiveX در Registry ویندوز نباشه. Manifest فایلهای متنی با فرمت XML ئه که می توانید با هر ویرایشگر متنی بازش کنید و یا بسازید.
اما نوشتن دستی اش به دقت زیادی احتیاج داره و با کوچکترین اطلاعات اشتباه کار نمی کنه. لذا توصیه می کنم که برای ActiveX هایی که با
ویژوال بیسیک کلاسیک 6 می سازید Manifest رو با ابزار regsvr42 بسازید که پیوست این پست شده :
مشاهده پیوست regsvr42_tool.zip
فرض کنیم که شما یک Project1.dll ای ساخته اید که می خواهید در Project2.exe ازش استفاده کنید.
در درایو :C یک پوشه مثلا با نام ABC بسازید، که می شود مسیر C:\ABC و داخل اون پوشه سه تا فایل Project1.dll و Project2.exe و regsvr42.exe را کپی کنید.
حالا یک پنجره Command Prompt باز کنید (ترکیب کلیدی
کلید ویندوز +
کلید R را فشار دهید (
) تا پنجره Run باز بشه، عبارت
cmd را بنویسید و OK کنید)
دو دستور زیر رو در پنجره Command Prompt تایپ کنید و در انتهای هر سطر کلید Enter را فشار دهید، فرقی بین حروف بزرگ و کوچک نیست :
کد:
[SIZE=3]
CD /D C:\ABC
REGSVR42 -client:[B][COLOR="#0000FF"]Project2.exe[/COLOR][/B] [B][COLOR="#0000FF"]Project1.dll[/COLOR][/B]
[/SIZE]
دستور برای
Project2.exe و
Project1.dll نوشته شده که می توانید آنها را مطابق با اسامی فایل های خودتان تغییر دهید.
پنجره Command Prompt را ببندید یا دستور exit را داخلش اجرا کنید.
حالا فایل های Project1.sxs.manifest و Project2.exe.manifest در آن پوشه ایجاد شده اند. فایل Project1.sxs.manifest را با NotePad ویندوز یا هر ویرایشگر متنی دیگری باز کنید و سطری
با متن ""=proxyStubClsid32 را داخلش بیابید، مقدارش را مطابق سطر زیر تغییر دهید :
کد:
[SIZE=3]
proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
[/SIZE]
مادامی که آن دو فایل Manifest در کنار dll و exe مورد نظر هستند و تغییری نکرده اند برای اجرای برنامه نیازی به ثبت شدن dll در Registry ویندوز های XP به بعد نیست.
مشاهده پیوست regsvr42_tool.zip
regsvr42: Generate SxS Manifest Files from Native DLLs for Registration-Free COM