PDA

View Full Version : بدست آوردن نام فایل ocx استفاده شده توسط یک آبجکت (از طریق کدنویسی)



پدرخوانده
چهارشنبه 03 اسفند 1384, 18:33 عصر
به دنبال نمایش یک فایل فلش در برنامه هستم و برای اینکه اطمینان حاصل کنم که فایل فلش در سیستم کاربر قابلیت پخش را دارد فایل موردنظر را در داخل فایل اجرایی include کردم و پس از تست عدم ایجاد آبجکت از نوع فلاش فایل موردنظر را در شاخه سیستم نصب و سپس رجیستر می کنم حال مشکل در این است که به علت تفاوت نوع کلاسهای پخش فلش برنامه به هنگام تست جهت اجرای فایل با مشکل مواجه می شود بدین صورت که برنامه تشخیص می دهد که فلاش در سیستم کاربر نصب می باشد.(از طریق چک ایجاد این آبجکت از طریق کدنویسی) ولی به هنگام پخش فایل فلاش موردنظر صفحه خالی را می آورد (شاید خیلی از دوستان اشاره کنند که مقدار پارامتر Movie از آبجکت فلاش را درست مقداردهی نکرده ام (یعنی مسیر کامل نداده ام) که عرض می کنم مسیر و نام فایل را بصورت کامل وارد کرده ام) ) به فایل ocx موردنظر دقت کردم دیدم فایل به نام swflash.ocx است و فایلی که برنامه بنده از آن استفاده کرده و .... سالم است فایل flash.ocx است (و هنگامی که این فایل وجود داشته و یا نصب باشد برنامه بدون مشکل کار می کند (فایل فلاش را به خوبی نمایش می دهد) ) حال می خواستم بدانم بین این دو چه تفاوتی است (این دو ocx) و چگونه تشخیص دهم که مثلا آبجکت ایجاد شده از چه فایلی استفاده می کند (که از این طریق درصورتی که از فایل موردنظر استفاده می کرد مجددا فایل ocx خود را نصب کنم)

کد ایجاد آبجکت جهت نمایش فلش که داخل try except اجرا می شود


FlashOCX := TShockwaveFlash.Create(nil);

(این کد در صورتی که فایل swflash.ocx نصب باشد نیز ایجاد می شود ولیکن فایل موردنظر فلش را پخش نمی کند)

و یک راه حل دیگر اینکه تست کنیم که این فایل (swflash.ocx) در رجیستری نصب شده است و در صورت مثبت بودن مجددا فایل جدید(flash.ocx) را نصب کنیم.
(یعنی بتوان در رجیستری سرچ کرد و ....) و آیا در کل این راه حل مناسب است یا خیر؟

Hamid_PaK
چهارشنبه 03 اسفند 1384, 19:34 عصر
ببین ورژن فایل فلش ( چهارمین بایت توی فایل ) که می خواهید پخش کنید بالاتر از ورژن اکتیو ایکس فلش که در حال حاضر نصب هست نباشه ...
[ flash.ocx ورژن 7 به بالاست ولی swflash.ocx ورژن 6 هست ... ]
یا حق !!!

پدرخوانده
پنج شنبه 04 اسفند 1384, 10:22 صبح
خوب حالا بحثی سر خود فایل فلاش موردنظر نیست
بلکه الزاما می خواهم که فایل flash.ocx (همون ورژن 7 نصب بشه)
ولی برای اینکه تست کنم که این ocx نصب است یا خیر از طریق کدنویسی (کد موجود در تایپیک اول) در صورتی که ورژن قبلی (Swflash.ocx) نصب باشد برنامه قادر به نصب مجدد نیست (چرا که تشخیص داده ocx مربوط به فلاش (هرچند نسخه قبلی) نصب است)
لذا می خواهم از طریقی (جستجو در رجیستری , ....) تشخیص دهم که کدام نسخه فعال است و سپس در صورت عدم نصب فلاش نسخه موردنظر , نسخه جدید را نصب کنم
با تشکر

javad_hosseiny
پنج شنبه 04 اسفند 1384, 11:50 صبح
بدست آوردن نام فایل از طریق رجیستری و سپس تست نسخه موردنظر امکان پذیر است که قبلا در این تایپیک مطرح شده است
http://www.barnamenevis.org/forum/showthread.php?p=189811
و راه حل دیگر با توجه کد خودتان که در حلقه try except می باشد (جهت ایجاد یک آبجکت از نوع فلاش) که در صورت عدم وجود نصب کند در داخل حلقه try بعد از دستور ایجاد با استفاده از پارامتر FlashVersion می تونید ورژن فلاش نصب شده را نیز بدست آورید که با توجه به ورژن فلاش مورد نظر برای نسخه 8 عدد 524288 و نسخه 7 عدد 458752 و نسخه 6 عدد 327722 را برمی گرداند و درصورت عدم سازگاری با نسخه موردنظر شما مجدد فایل ocx فلاش دلخواه خود را نصب کنید.


FlashOCX := TShockwaveFlash.Create(nil);
if FlashOCX.FlashVersion < 458752 then
روتین مربوط به extract فایل ocx و سپس رجیستر کردن آن