ايران ويج

نسخه‌ی کامل: ساخت ocx قابل استفاده در vb6
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4 5 6
برای رجیستر کردن و public کردن یک اسمبلی به اسم مثلا NETServer.dll دستور های زیر رو باید اجرا کرد :

کد:
tlbexp NETServer.dll /out:NETServer.tlb
regasm /tlb:NETServer.tlb NETServer.dll
gacutil /i NETServer.dll

سعی کن ببین حالا که public میشه میتونی property هاش رو بخونی یا نه !
سلام.
این دستور این ارور رو میده.
Failure adding assembly to the cache: Attempt to install an assembly without a strong name

ضمن این که قبلا این دستورات tlbexp و regasm رو تست کردم. اینا dll رو تو لیست کامپوننت ها اضافه نمیکنن. فقط تو لیست ریفرنس ها اضافه میشه و نمیشه در حات دیزاین رو فرم روشون کار کرد.
برای مشکل اون خطا این لینک رو ببین و مراحلش رو طی کن تا یه strong name ( یه کد رمزی برای اسمبلی خودت ) بسازی و بعد کارت راه میافته !

http://support.microsoft.com/kb/302340


اضافه کردن یه اسمبلی دات نتی به لیست کامپوننت های COM تا اونجایی که من مطالعه کردم محال است !! شما فقط به یک اینترفیس COM دسترسی خواهی داشت( که در اصل COM نیست و دات نتیه ) و نه به یک کامپوننت COM . به همین علت هست که اسم اسمبلی شما در لیست اینترفیس ها میاد نه کامپوننت ها !!!!
در واقع باید بدونی که شما به هیچ وجه یه کامپوننت COM نمیسازی بلکه با یک لایه نرم افزاری به نام CCW به امکانات یک اسمبلی دات نتی از داخل یک کلاینت COM ( مثل وی بی 6 ) دسترسی پیدا میکنی و بس !!! راه دسترسی به اون هم فقط از طریق اینترفیس Type Library یا همون فایل tbl هست .
سلام.
ولی من تو اون مثالی که گذاشته بودم دیدی که dll به لیست کامپوننت ها اضافه میشه. پس این کار شدنیه. مشکل من نمایش تو لیست کامپوننت ها نیست. اونو که تو مثالی که گذاشتم حل کردم. من میخوام تو حالت دیزاین به کل پروپرتی های کامپوننت دسترسی داشته باشم. همه اونایی که تو .net نشون داده میشن.
فعلا چیزی به ذهنم نمیرسه !
از هفته بعد امتحان پایان ترم دارم و تا 2 هفته وقت ندارم . تلاشت رو بکن و ببین میتونی راهش رو پیدا کنی یا نه . اگر پیدا کردی اینجا هم بگذار !
اگر نه دو هفته دیگه میام روش دوباره کار میکنم ببینم قضیه از کجا آب میخوره !
سلام.
اوکی. من روش کار میکنم نتیجه گرفتم حتما همین جا اعلام میکنم.
ایشالا امتحاناتت رو با موفقیت بگذرونی.
سلام.
یه مشکل دیگه.
اون مثالی که گذاشته بودم که کامپوننتی میساخت که میشد تو ویبی به صورت اینترفیس ازش استفاده کرد(http://www.forum.iranled.com/attachment.php?aid=1017) یه مشکلی داره. اول این که اگه بخوای از کامپوننت رو یه سیستم دیگه استفاده کنی حتما باید برنامه دات نتی رو هم اجرا کنی تا کامپوننت رجیستر و قابل استفاده در ویبی بشه.
دوم این که رو سیستم خودمم چند تا کامپوننت که میسازم با هم قاطی میشن. مثلا من تو ویبی تست1 رو اد میکنم تست2 به جعبه ابزارم اضافه میشه.
حالا چطور میتونم دستی کامپوننتم رو رجیستر کنم که نه قاطی بشن نه لازم باشه برنامه دات نتی رو سیستم های دیگه هم کامپایل شه؟
سلام.
مشکل رو خودم حل کردم.
یه پچ نوشتم مشکل رو حل میکنه. بعدا میذارم این جا کامل توضیح میدم.
سلام.
یه سوال جدید.
حالا که با اون مثالی که توضیح دادم (http://www.forum.iranled.com/attachment.php?aid=1017) میشه کامپوننت از تو .net اورد تو ویبی یه مشکل جدید دارم. من میخوام کل پروپرتی های کامپوننت تو ویبی قابل دسترس باشه. ولی تو ویبی نمیشه به پروپرتی های کامپوننت دسترسی داشت. چطور این مشکلو حل کنم؟
سلام.
یه سوال دیگه.
فرض یه کامپوننت ساختی که روش یه کلیده که وقتی روش کلیک کنی یه فرم باز میشه. وقتی اینو میاری تو ویبی یه مشکلی پیش میاد. وقتی فرم ویبی باز میشه و کلید رو کلیک میکنی فرم دات نتی باز میشه. تا این جا مشکلی نیست. ولی بعد که ویبی رو استاپ میکنی اون فرم دات نتی همچنان باز میمونه. اگه تو ویبی 2 تا فرم داشته باشی و کامپوننت رو یکی از فرمات باشه و فرم باز شه و کارش تموم شه و بسته شه ولی فضای اشغالی توسط کامپوننت دات نتی همچنان اشغال میمونه و هندل ها رو آزاد نمیکنه. تا زمانی که برنامه ویبی کلا بسته نشه کامپوننت دات نتی باز میمونه. حتی اگه اون فرمی که روش بوده بسته شه.
حالا من با یه سری ترفند و نوشتن ساب مشکلو موقتا حل کردم. ولی میخوام بدونم چی کار باید کرد که وقتی فرم ویبی بسته شد همه کامپوننت های روش هم بسته شن و فضای اشغالی کاملا آزاد شه.
سلام.
بازم سوال.
این بار در مورد EVENT ها. من میخوام تعدادی ایونت تو دات نت برای کامپوننتم تعریف کنم و هنگامی که اون کامپوننت رو اوردم تو ویبی6 کد هنگام اجرای اون ایونت رو بنویسیم.

من تو ویبی دات نت با اتربیوت COMCLASS میتونم ایونت های کامپوننت دات نت رو تو ویبی6 استفاده کنم. ولی این کامپوننت از namespace ویژوال بیسیک هست.
Microsoft.VisualBasic.ComClass()
مشکل این جاست که این کامپوننت تو ویبی دات نت جواب میده ولی تو C# جواب نمیده. چطور میتونم این مشکل رو جل کنم؟ با تعریف interface و اتربیوت InterfaceType و ClassInterface تونستم این مشکل رو برای ریفرنس ها حل کنم. یعنی اگه کامپوننت ظاهر گرافیکی نداشته جواب میده ولی برای کامپوننت با ظاهر گرافیکی جواب نمیده.
لطفا راهنمایی کنید.
صفحه‌ها: 1 2 3 4 5 6