the_king
مدیرکل انجمن
سال نو برای شما هم مبارک باشه.سلام
ممنون استاد علی
عیدتون مبارک باشه
میگم من در کمپوننت Codejock Xtreme Suite Pro ActiveX 13.4.0 (که خودش شامل چندین کمپوننت هست) ، هر قسمت از این ها رو خواستم با استفاده از مثال اش (که بصورت آماده موقع نصب این کمپوننت ، توی پوشه ی نصب اش مثال ها ریخته میشه) استفاده کنم ، گفت که کلاس کمپوننت در رجیستری ثبت نشد. حالا 2 تا سئوال :
اول اینکه من وقتی توی سی شارپ خواستم از کمپوننت اتوات استفاده کنم (فایل dll مربوط به نسخه ی سی شارپ موسوم به assembely.dll شو) ، ازم نخواست که مثل این ، اول تی رجیستری ثبت کنم . نمیدونم شاید توی همون فایل سی شارپ ، در متد سازنده اش ، خودش اتوماتیک ثبت میکرد) . این حدسم درسته؟ اگه نه پس چرا کمپوننت اتوات لازم به ثبت کردن در رجیستری نداشت (با نسخه ی سی شارپ اش)
و دوم اینکه اگه بخوام با استفاده از سی شارپ ، یه کمپوننت ای رو در رجیستری ثبت کنم با چه متد یا کلاسی باید کار کنم؟
ممنون
اصولا هیچ ActiveX ای همینطوری خود به خود Register نمیشه، یا از اول توی ویندوز بوده یا توسط Setup ای Register شده یا برنامه ای که ازش استفاده می کرده اول Register اش کرده.
در ضمن در مواردی با نگه داشتن فایل oca موقتی که ساخته میشه در کنار فایل ActiveX و یا با اضافه کردن یک فایل manifest میشه این روال نصب در Registry رو غیر ضروری کرد.
رجوع شود به :
استفاده از dll بدون رجیستر کردن انها
ActiveX ها رو یا مستقیما با regsvr32 در Registry نصب می کنند یا در یک Setup قرار می دهند که اینکار رو با واسطه انجام بده.
در ویندوز های 64 بیتی دو تا regsvr32 هست، c:\Windows\SysWOW64\regsvr32.exe و c:\Windows\System32\regsvr32.exe که اولی برای سازگاری با نرم افزار های 32 بیتی ئه و ممکنه دومی با همه ActiveX ها درست کار نکنه. وقتی مسیر فایل ActiveX رو به عنوان پارامتر به regsvr32 بدهید ثبت اش می کنه، اگه سوئیچ u/ رو اضافه کنید از Registry حذف اش می کنه. اگه سوئیچ s/ رو اضافه کنید مخفیانه و بدون پیغام ثبت اش می کنه.
مثلا "C:\Windows\SysWOW64\regsvr32.exe /s "D:\My Active\ac.ocx فایل ac.ocx رو بدون پیغام ثبت می کنه.