PDA

View Full Version : سوال: نحوه گذاشتن یک swf در dll



american_iran2006
سه شنبه 24 دی 1387, 11:47 صبح
سلام بچه ها:

یک sample در مورد قرار دادن فایل swf فلش در dll دارید . اگه هست ممنون میشم بذارید

اگه هم ندارید نحوه انجامش به چه شکله :متفکر:

hosseinsinohe
سه شنبه 24 دی 1387, 11:56 صبح
سلام بچه ها:

یک sample در مورد قرار دادن فایل swf فلش در dll دارید . اگه هست ممنون میشم بذارید

اگه هم ندارید نحوه انجامش به چه شکله :متفکر:

اول توی پروژه وارد قسمتproperties و پس از رفتن به قسمت resources فایل رو اون قسمت اضافه می کنی و پروژه کامپایل می کنی تا فایل dll ساخته بشه

newgoldenman
سه شنبه 24 دی 1387, 12:01 عصر
نگفتي دقيقاً ميخواي چيكار كني! يك فايل رو توي فايل DLL ذخيره كني و بعداً Load و استفاده كني؟ اگه اينطوره، فايلت رو بصورت []Byte بخون و اونو توي فايلت ذخيره كن.

american_iran2006
سه شنبه 24 دی 1387, 12:08 عصر
سلام :
خوب این کارو کردم اما کجا dll شو میسازه . چون فایل من 656 kb اما dll ساخته شده 8 kb

یعنی این قدر فشرده میکنه . گذشته از این من ممیخوام 17 فایل swf رو به dll تبدیل کنم و از یک

exe بخونم . روششو نمی دونم :متفکر:

newgoldenman
سه شنبه 24 دی 1387, 14:32 عصر
من نميدونم چطوري شما فايلت رو خوندي، و چطوري نوشتيش توي فايل DLL ! پيشنهاد من استفاده از كلاسهاي BinaryReader و BinaryWriter هست.
17 تا فايل؟ توي فايل DLL ؟ خوب چرا از ديتابيس استفاده نميكنيد؟ استفاده از ديتابيس توي اين مثال شما خيلي عالي هست و همچنين سرعت بارگزاري و ذخيره ي اطلاعاتتون نسبت به فايل DLL كه بصورت سطحي عمل ميكنه، ميره بالاتر. اگر اين روشي كه گفتم رو بخواهيد استفاده كنيد، نمونه اش توي همين انجمن هست. جستجو كنيد.
اگر از ديتابيس نميخواهيد استفاده كنيد، بهترين گزينه براي مثال شما، استفاده از فايل XML هست.
و ...

و درنهايت، اگر واقعاً تاكيد داريد كه از فايل DLL استفاده كنيد، بايد براي فايلتون يك Type در نظر بگيريد. مثلاً به اين شكل:

SWF1=Stream of SWF file number 1
SWF2=Stream of SWF file number 2
SWF3=Stream of SWF file number 3
...
SWFn=Stream of SWF file number n
اين ساختار رو ميتونيد توي يك كلاس تعريف شده داخل فايل DLL خودتون پياده سازي و ذحيره كنيد.
يك تابع هم بنويسيد كه وقتي عدد مثلاً 5 به آرگومان اون فرستادين، رشته ي مربوط به فايل SWF5 رو براتون return كنه.

موفق باشيد.

american_iran2006
سه شنبه 24 دی 1387, 14:49 عصر
سلام :

مشکل از اونجا شروع میشه که decompailer فلش باعث لو رفتن تمام سورس فایلام میشه

. دنبال یک روش برای قفل کردن و از دسترس خارج کردن swf هام هستم و خوندن اونا از یک
exe

حالا نمی دونم چه راهی بهتره از صبح تا الان دنبال یک منبع میگردم که روش dll کردن یک

swf رو پیدا نکردم .

و بعد روش خوندنشو من یک swf میزارم ببینید میتونید این کارو بکنبد dll بسازید ازش و بعد با activx تو c# بخونید

newgoldenman
سه شنبه 24 دی 1387, 15:10 عصر
اين كه فقط يك فايل SWF بود!
من نميدونم چرا مشكل داري هنوز شما! اچه ميخواي فايلت رو بريزي تو فايل DLL ، خوب بايد اونو بصورت رشته ذخيره كني. يا توي ديتابيس يا توي XML يا هر جا و هر مدل فايل ديگه. اينها چه ربطي به SWF Cecomliper داره؟ شما ميخواي فايلهات يه جايي باشه كه كسي بهش دسترسي نداشته باشه، و هر موقع خواستي، از توي برنامت فقط اونو اجرا كني. درسته؟ اگه اينطوره، بصورت رشته ذخيره كردن فايل شما، توي يك فايل ديگه، چه اشكالي داره؟ اگه خيلي هم باز حساس هستيد، ميتونيد توي برنامتون، موقع نوشتن اون رشته درون فايل DLL يا XML يا توي ديتابيس، يه چيزي الكي بهش اضافه كنيد! و موقع خوندنش، همون چيز الكي رو باز ازش جدا كنيد و سپس فالتون به روز اول برميگرده!

من در پياده سازي سوال شما، هيچ مشكلي نميبينم. نميدونم ديگه چرا هنوز به جوابتون نرسيديد!
اينم آخرين پيشنهادم براي شما:
1: يك كامپوننت axShockwaveFlash به فرمتون اضافه كنيد.
2: مقدار Movie اونو با دادن آدرس فايل فلش خودتون از توي هارد، پر كنيد.
3: مقدار EmbedMovie اونو از false به true تغيير بديد.
4: برنامتون رو كامپايل و اجرا كنيد.
5: فايلي كه آدرسش رو داده بوديد به كامپوننت فلش، از اون مسير حذف يا Rename كنيد.
6: يك بار ديگه برنامه تون رو اجرا كنيد.
7: فايل فلش شما توي كامپوننت فلش Load شد! درسته؟ پس الان فايل فلش شما به خود فايل اجرايي يعني exe اضافه شده.


موفق باشيد

shask00l
سه شنبه 24 دی 1387, 15:58 عصر
دوست عزیز .
چرا بیخودی کار خودتو سخت میکنی . برای محافظت از فایل های فلش روش های بهتری هم وجود داره . مثلا میتونی با برنامت فایلهای فلش رو کد کنی . فایل رو بصورت باینری باز کن و تمام فایل رو (مثلا) با یک عبارت xor کن . این ساده ترین روشه . روش های کدگذاری خیلی ریادی وجود داره . برای باز کردنشون هم میتونی توی temp ویندوز با 1 نام عجیب و غیر تابلو ذخیرش کنی . تازه اگه با ذخیره کردن روی دیسک مشکل داری میتونی مستقیم بریزی روی رم و ...... یکی توی همین سایت همچین کاری رو با دلفی انجام داده بود ...

از این گذشته برای flash پروتکتور های زیادی پیدا میشه .

newgoldenman
سه شنبه 24 دی 1387, 19:17 عصر
مشکل از اونجا شروع میشه که decompailer فلش باعث لو رفتن تمام سورس فایلام میشه
اگه خود فايل مشكلتونه، با استفاده از روشهايي كه پيشنهاد دادم، همه چيز حله! ولي اگر مشكلتون لو نرفتن ActionScript هاي داخل فايل فلشتون هست، ميتونيد كدهاي ActionScript رو از طريق #C و برنامه ي خودتون، به فايل Flash تزريق و اجرا كنيد!

american_iran2006
پنج شنبه 26 دی 1387, 14:56 عصر
سلام :

ممنون بابت جوابتون . راه حلتون جواب داد .

اگر مشكلتون لو نرفتن ActionScript هاي داخل فايل فلشتون هست، ميتونيد كدهاي ActionScript رو از طريق #C و برنامه ي خودتون، به فايل Flash تزريق و اجرا كنيد!

منظورتون از طریق fscommand هستش ؟

یک نکته ای
من هر کاری با regsvr32 /i path.ocx نمی تونم activex فلش رو رجیستر کنم

تو vc++6 هیچ مشکلی نیست و ocxکار میکنه اما تو vstudio2005 اضافه نمیشه ocx و میگه رجیستر شود

این جوابو میده
DllRegisterServer in C:\WINDOWS\system32\Macromed\Flash\Flash8.ocx failed.
Return code was: 0x80070005

کسی راه حلی داره یا نرم افزار خاصی هست که این کارو بکنه

در ضمن کل مطالب این سایت هم خوندم در این مورد اما بازم نشد :افسرده:

تو vc++6 از ocx فلش راحت استفاده میکنم ام تو vstudio2005 نمیشه و میگه باید اول رجیستر بشه خوب اگه نشده این vc++6 خره که این کارو میکنه

american_iran2006
شنبه 28 دی 1387, 11:06 صبح
سلام :
جواب رجیستر نشدن ocx flash

1-نصب فلش پلیر
2- نصب پلاگین فلش پلیر
3- تو command promt دستور regsvr32 /i macromed/flash8b.ocx

regsvr32 /i macromed/Flash8_original_original.ocx

4- تو ویژوال استودیو2005 -> c#->

tools . choose item . com . browse. c:\windows\system32\macromed\flalsh\flash8b.ocx

را اضافه کنید و بعد استفاده مورد نیاز را ببرید

newgoldenman
شنبه 28 دی 1387, 16:14 عصر
من هر کاری با regsvr32 /i path.ocx نمی تونم activex فلش رو رجیستر کنم

تو vc++6 هیچ مشکلی نیست و ocxکار میکنه اما تو vstudio2005 اضافه نمیشه ocx و میگه رجیستر شود

تو vc++6 از ocx فلش راحت استفاده میکنم ام تو vstudio2005 نمیشه و میگه باید اول رجیستر بشه خوب اگه نشده این vc++6 خره که این کارو میکنه
سلام
بله، fscommand و چند تا تابع ديگه.

منظورتون از رجيستر كردن چيه؟ مگه نميتونيد از ocx فلش، همينطوري استفاده كنيد؟! خوشحال ميشم يك عكس از پنجره ي error اي كه ميگيد ببينم. ممنون

s_ahmadneya
سه شنبه 20 اسفند 1387, 13:33 عصر
سلام
بله، fscommand و چند تا تابع ديگه.

منظورتون از رجيستر كردن چيه؟ مگه نميتونيد از ocx فلش، همينطوري استفاده كنيد؟! خوشحال ميشم يك عكس از پنجره ي error اي كه ميگيد ببينم. ممنون
منم تمامی دستورات این تاپیک را انجام دادم اما رجستر نمی شه وقتی روی ایکن در toolbax دوبار کلیک می کنم پیغام زیر صادر می شود

bahar_engineer
سه شنبه 20 اسفند 1387, 15:36 عصر
سلام
اگه می خواین یه فایل فلش رو اضافه کنین فکر کنم این راه حل خوبی باشه :
1. بخش toolbox محیط ویژوال استدیو رو باز کنین (همون منوی سمت چپ)
2. روی اون کلیک راست کنین و choose item رو انتخاب کنین
3. حالا یه پنجره باز می شه به اسم choose toolbox items که شما tab سمت راستی یعنی com components رو باز می کنین.
4. حالا توی لیست موجود بگردید دنبال گزینه shock wave flash object رو تیک بزنید و ok کنید.
5. حالا پروژه رو rebuild کنید.
6. حالا این کامپوننت توی toolbox تون در سمت چپ اضافه شده است.
7. drag and drop و قضیه حله (اگه "Failed to import the ActiveX control. Please ensure it is properly registered" این error رو بهتون داد دوباره rebuild کنید. حالا اضافه می شه)
8. حالا فایل فلش رو اضافه کنید. به این طریق که روی همون کامپوننت که درگ کردین کلیک کنید در قسمت property در کنار آیکون event یک آیکون جدید مشاهده می کنید به نام property page که روی اون کلیک می کنید. صفحه property باز می شه از اونجا در قسمت movie url آدرس فایل فلش رو بهش می دین. حالا اجرا کنید!!!:چشمک:

فقط من در اینجا یه سوال دارم از اساتید محترم:
در این حالت فلش که اجرا می شه مثل صفحات وب تابلوه که فلشه . وقتی روش کلیک راست می کنیم همون پنجره باز می شه که quality و ... اطلاعات فایل فلش رو نشون می ده.
راهی هست که اصلاً مشخص نشه که این فایل یه فایل فلشه ؟
ممنون می شم راهنمایی کنین. البته پست ها رو در این زمینه خوندم اما زیاد متوجه نشدم.