PDA

View Full Version : نصب activex



lukaskain
دوشنبه 01 آبان 1391, 10:26 صبح
لطفاً اشکال کار من را بگیرید
1-در دلفی 7 از فایل فلش استفاده نموده ام.
2-ocx فلش را در ویندوز رجیستر و در دلفی نصب کردم.
3-فایل ocx را از طریق res به برنامه الحاق کردم.
4-در FormCreate فایل ocx را کپی و سپس رجیستر می کنم.

برنامه را در یک سیستم که flash.ocx رجیستر نشده اجرا می کنم Error می دهد!
زمانی که flash.ocx رجیستر است کپی و رجیستر را انجام می دهد!

BORHAN TEC
دوشنبه 01 آبان 1391, 10:45 صبح
سلام

برنامه را در یک سیستم که flash.ocx رجیستر نشده اجرا می کنم Error می دهد!
چه خطایی؟؟؟ :متفکر:

روش انجام این کار در زیر توضیح داده شده است:
http://delphi.about.com/od/windowsshellapi/l/aa040803a.htm

ولی من یک پیشنهاد دارم و اون هم اینه که برای استفاده از فایل های فلش از کامپوننت های F-In-Box استفاده کنید که اگر فایل OCX فلش در سیستم مقصد رجیستر هم نشده بود برنامه برای انجام کار درست با مشکل مواجه نشود. من قبلاً نحوه کار با این کامپوننتها رو در همین سایت توضیح داده بودم که با جستجو در سایت می توانید آنها را پیدا کنید.

موفق باشید...

mohsen24000
دوشنبه 01 آبان 1391, 11:11 صبح
لطفاً اشکال کار من را بگیرید
برنامه را در یک سیستم که flash.ocx رجیستر نشده اجرا می کنم Error می دهد!
زمانی که flash.ocx رجیستر است کپی و رجیستر را انجام می دهد!
احتمالا شما در محیط ویندوز 7 دارید از برنامه استفاده می کنید که رجیستر کردن اکتیوایکس مستلزم اینه که دسترسی ادمین داشته باشید. پس با این فرض باید برنامه رو در حالت Run As Administrator اجرا کنید...

lukaskain
دوشنبه 01 آبان 1391, 22:38 عصر
ضمن تشکر از پاسخ عزیزان
شیوه کلی کد نویسیم درسته البته تفاوتهایی وجود دارد که به خاطر ماهیت برنامه است اما منطق آن به ظاهر صحیح است.
در مورد administrator هم با manifest ادمین کرده بودم اما باز هم نشد!

mohsen24000
دوشنبه 01 آبان 1391, 23:02 عصر
بنده با تابع زیر دارم کار می کنم و براحتی کار رجیستر انجام میشه!

function RegisterActiveX(const aDllFileName: string; aRegister: Boolean): Boolean;
type
TRegProc = function: HResult;
stdcall;
const
cRegFuncNameArr: array [Boolean] of PChar =
('DllUnregisterServer', 'DllRegisterServer');
var
vLibHandle: THandle;
vRegProc: TRegProc;
begin
Result := False;
vLibHandle := LoadLibrary(PChar(aDllFileName));
if vLibHandle = 0 then Exit;
@vRegProc := GetProcAddress(vLibHandle, cRegFuncNameArr[aRegister]);
if @vRegProc <> nil then
Result := vRegProc = S_OK;
FreeLibrary(vLibHandle);
end;