PDA

View Full Version : سوال: اضافه کردن فایل به ریسورس



CsharpNevisi
چهارشنبه 23 مرداد 1392, 17:11 عصر
سلام ... خسته نباشید .... من چندتا فایل فلش دارم ... میخواستم بزارمش تو ریسورس برنامه و از ریسورس فراخوانیش کنم ... میخوام کاربر نتونه هیچ جوره بهش دسترسی داشته باشه و بدزدتش ... !!!
چطور این کارو بکنم ؟؟؟؟

Mahmoud.Afrad
چهارشنبه 23 مرداد 1392, 18:06 عصر
برای استفاده از AxShockwaveFlash از این متد استفاده کن:

private void InitFlashMovie(AxShockwaveFlashObjects.AxShockwave Flash flashObj, byte[] swfFile)
{
using (MemoryStream stm = new MemoryStream())
{
using (BinaryWriter writer = new BinaryWriter(stm))
{
/* Write length of stream for AxHost.State */
writer.Write(8 + swfFile.Length);
/* Write Flash magic 'hohoho' */
writer.Write(0x55665566);
/* Length of swf file */
writer.Write(swfFile.Length);
writer.Write(swfFile);
stm.Seek(0, SeekOrigin.Begin);
/* 1 == IPeristStreamInit */
flashObj.OcxState = new AxHost.State(stm, 1, false, null);
}
}
}

اینطوری هم اسفاده کن:

byte[] data = Properties.Resources.ResourceName;
InitFlashMovie(axShockwaveFlash1, data);

ResourceName نام ریسورس از نوع فلش.
axShockwaveFlash1 هم شئ فلش پلیر.

CsharpNevisi
چهارشنبه 23 مرداد 1392, 19:43 عصر
چجوری فایلو به ریسورس اضافه کنم ؟؟؟

matrix-program
پنج شنبه 24 مرداد 1392, 12:59 عصر
solution explorer-->properties -->resource-->add resource
اگه میخوای فایل اضافه کنی از کنار همین گزینه (نوشته string ) کلیک کن گزینه فایل رو انتخاب کن و add resource بزن

دسترسی به ریسورس ها

string i = Properties.Resources.اسم فایل;

موفق باشی

CsharpNevisi
جمعه 25 مرداد 1392, 10:08 صبح
solution explorer-->properties -->resource-->add resource
اگه میخوای فایل اضافه کنی از کنار همین گزینه (نوشته string ) کلیک کن گزینه فایل رو انتخاب کن و add resource بزن

دسترسی به ریسورس ها

string i = Properties.Resources.اسم فایل;

موفق باشی

با ریسورسی که تو properties بود نشد چیزی اضافه کنم .. ادد نداشت ... ولی پایین properties ریسورس هست که با اون اضافه میشه ولی موقع فراخوانی اسمش نمیاد .... میشه با عکس نشون بدی ؟؟؟

mohsen_popo
جمعه 25 مرداد 1392, 10:20 صبح
109172
این نحوهی دسترسی ==che_3_taie.Items.Add(Resources.FormInout1.Ashpaz .CheckBox1);m
کد دسترسی که دوستمون بالا نوشته درسته ...
موفق باشی...

CsharpNevisi
جمعه 25 مرداد 1392, 10:32 صبح
چـــــــــــــــــرا واس من اسمش تو ریسورس نیست ؟؟؟؟
http://upload7.ir/images/99647311583829786991.png

mohsen_popo
جمعه 25 مرداد 1392, 10:39 صبح
دوست عزیز شما پوشه ی Resources ایجاد کردی اما فایل Resources که پسوند resxداره نه .... به عکسی که فرستادم دقت کن...اگه اشتباه نکنم شما برای دسترسی به آدرس باید از Application.StartupPath استفاده کنی...

CsharpNevisi
جمعه 25 مرداد 1392, 10:42 صبح
من میخوام فایل فلش داخل برنامه ام باشه نه کنار برنامه ... نمیخوام کسی بتونه فایل فلشمو کپی کنه و کلا بهش دسترسی داشته باشه ... ( اینطوری ممکنه دزدیده بشه ) .. !!!!
شما دقت کن ..... اسم عکس میاد ولی اسم فلش نمیاد .. !!! مشکل من اینه ... !!!!

mohsen_popo
جمعه 25 مرداد 1392, 10:59 صبح
عکس شبیه به پروپرتی داده .. فکر نکنم بتونی ازش استفاده کنی... اما برای در امان ماندن فایل فلش ....

CsharpNevisi
جمعه 25 مرداد 1392, 11:05 صبح
چرا ... میتونم ار عکسی که تو ریسورسه استفاده کنم ... !!!!!
فقط میخوام بدونم چرا اسم فلش تو کدنویسی نمیاد ... شرایطش عین عکسه ... !!!!
حتی یه فایل resx رو تعریف کردم و داخل اون فلش رو گذاشتم ولی افاقه نکرد ... !! :گریه:

khokhan
چهارشنبه 20 شهریور 1392, 21:21 عصر
چرا ... میتونم ار عکسی که تو ریسورسه استفاده کنم ... !!!!!
فقط میخوام بدونم چرا اسم فلش تو کدنویسی نمیاد ... شرایطش عین عکسه ... !!!!
حتی یه فایل resx رو تعریف کردم و داخل اون فلش رو گذاشتم ولی افاقه نکرد ... !! :گریه:
درود بر شما
بهتر بود راهی رو که دوست بسیار محترم آقا محمود پیشنهاد داده بودند رو پی می گرفتید اما قبول دارم که این کار یه خورده دقت وحساسیت لازم داره:لبخند::لبخند:
من یه خورده براتون توضیح می دم ویه نمونه هم ضمیمه خواهم کرد

1 . ابتدا دوتا dll مربوط به اجرای فایلهای فلش رو به ریسورس پروژه تون اضافه می کنین به عبارتی فایلهای : Interop_ShockwaveFlashObjects و AxInterop_ShockwaveFlashObjects

2 . سپس فایل فلشی رو هم که دوست دارین توی برنامتون ازش استفاده بشه رو هم به ریسورس پرو ژه تون اضافه می کنین
بااین حساب رسورس پروژه تون بایستی به این شکل دربیاد :

110491

3. همین فایلها ی dll رو به رفرنسهاتون هم بایستی اضافه بشن :لبخند:


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

4 . دقت کنین در فضا نام پروژه این دوتا یوزینگ موجود باشند :

using System.IO;
using System.Reflection;

5 . چون قراره ما از یه دایرکتوری فایلمون رو بخونیم پس لازم یه متغیر از نوع رشته تعریف کنیم و دایرکتوری حاوی فایلها رو برای استفاده بعدی اعلام کنیم البته این کار بایتی در کلاس فرم صورت بگیره

namespace swf_show
{
public partial class Form1 : Form
{
string directory = AppDomain.CurrentDomain.BaseDirectory;

6. در ادامه این کدهارو به کلاس فرمتون اضافه می کنین و فایلهای موجد در ریسورس معرفی می کنین :


public Form1()
{
try
{

if (File.Exists(directory + @"\Interop.ShockwaveFlashObjects.dll"))
{ }
else
{
var bw = new BinaryWriter(File.Open(directory + @"\Interop.ShockwaveFlashObjects.dll", FileMode.OpenOrCreate));
bw.Write(Properties.Resources.Interop_ShockwaveFla shObjects);
}

if (File.Exists(directory + @"\AxInterop.ShockwaveFlashObjects.dll"))
{ }
else
{
var bw1 = new BinaryWriter(File.Open(directory + @"\AxInterop.ShockwaveFlashObjects.dll", FileMode.OpenOrCreate));
bw1.Write(Properties.Resources.AxInterop_Shockwave FlashObjects);
}

if (File.Exists(directory + @"\firecrak.swf"))
{ }
else
{
var bw2 = new BinaryWriter(File.Open(directory + @"\firecrak.swf", FileMode.OpenOrCreate));
bw2.Write(Properties.Resources.firecrak);
}

InitializeComponent();


}
catch
{
MessageBox.Show("Installed Successfully, Please Close & restart Restart.");

}
}

7 . بعد نوبت به این می رسه تا یه متدی برای خوندن فایل فلش از طریق استرم درست کنین به این شکل :


private void InitFlashMovie(FlashControlV71.AxShockwaveFlash axShockwaveFlash1, byte[] data)
{
using (MemoryStream stm = new MemoryStream())
{
using (BinaryWriter writer = new BinaryWriter(stm))
{

writer.Write(8 + data.Length);

writer.Write(0x55665566);

writer.Write(data.Length);
writer.Write(data);
stm.Seek(0, SeekOrigin.Begin);

axShockwaveFlash1.OcxState = new AxHost.State(stm, 1, false, null);
}
}
}

8 . حالا در رویداد لود فرم یا رویداد کلیک یه باتن می تونین متد رو فراخوانی کنین :


private void button2_Click(object sender, EventArgs e)
{
byte[] data = Properties.Resources.firecrak;
InitFlashMovie(axShockwaveFlash1, data);
}

این هم نمونه برنامه لود فلش از ریسورس پروژه :

CsharpNevisi
پنج شنبه 21 شهریور 1392, 10:08 صبح
این چرا ارور میده ؟؟؟
http://upload7.ir/images/15760820849086634831.png

khokhan
پنج شنبه 21 شهریور 1392, 11:01 صبح
این چرا ارور میده ؟؟؟
http://upload7.ir/images/15760820849086634831.png

flash player روی سیستمتون نصب کردین یانه ؟
اگه نصب نکردین نصب کنین تا خطا رفع بشه

CsharpNevisi
پنج شنبه 21 شهریور 1392, 11:05 صبح
اره رو سیستمم نصبه ... !!!
micromedia flash player 8.2
من بخوام رو سیستم مشتری برنامه رو ران کنم کنم باید فلش پلر نصب باشه ؟؟؟
مگه ابجکت به تنهایی کافی نیست ؟؟؟

khokhan
پنج شنبه 21 شهریور 1392, 11:09 صبح
اره رو سیستمم نصبه ... !!!
micromedia flash player 8.2
من بخوام رو سیستم مشتری برنامه رو ران کنم کنم باید فلش پلر نصب باشه ؟؟؟
مگه ابجکت به تنهایی کافی نیست ؟؟؟
آبجکت کار خودش رو می کنه اما اگه پلیر نصب نباشه ارور می ده که ریجستری درست انجام نشده

پلیر 11 رو نصب

110517کنینhttp://barnamenevis.org/images/misc/pencil.png

CsharpNevisi
پنج شنبه 21 شهریور 1392, 11:14 صبح
این کفاف میده ؟؟؟؟
http://upload7.ir/images/32944326896885345778.png

khokhan
پنج شنبه 21 شهریور 1392, 11:25 صبح
این کفاف میده ؟؟؟؟
http://upload7.ir/images/32944326896885345778.png
اینو امتحان کن :

لینک (http://uplod.ir/56c6cdlost13/AdobeFlashPlayer10_MihanDownload.Com.rar.htm)

CsharpNevisi
پنج شنبه 21 شهریور 1392, 11:33 صبح
نشد بازم سینتکس ارور میده

khokhan
پنج شنبه 21 شهریور 1392, 11:40 صبح
نشد بازم سینتکس ارور میده
این متد رو کلا کامنت شون کن :

private void InitFlashMovie(FlashControlV71.AxShockwaveFlash axShockwaveFlash1, byte[] data)
{
using (MemoryStream stm = new MemoryStream())
{
using (BinaryWriter writer = new BinaryWriter(stm))
{

writer.Write(8 + data.Length);

writer.Write(0x55665566);

writer.Write(data.Length);
writer.Write(data);
stm.Seek(0, SeekOrigin.Begin);

axShockwaveFlash1.OcxState = new AxHost.State(stm, 1, false, null);
}
}
}

با این کار روی این خطوط ارور ظاهر می شه :


InitFlashMovie(axShockwaveFlash1, data);
بعد برنامه میخواد که خود کار رویداد مربوطه رو ایجاد کنه اجازه بده ایجاد بشه
بعد دستوراتی رو که کامت کرده بودی در رویداد جدید ست کن .. منظورم این دستورات هست :


using (MemoryStream stm = new MemoryStream())
{
using (BinaryWriter writer = new BinaryWriter(stm))
{

writer.Write(8 + data.Length);

writer.Write(0x55665566);

writer.Write(data.Length);
writer.Write(data);
stm.Seek(0, SeekOrigin.Begin);

axShockwaveFlash1.OcxState = new AxHost.State(stm, 1, false, null);
}
}

CsharpNevisi
پنج شنبه 21 شهریور 1392, 11:45 صبح
اینو الان دیدم... ببین انگاری نمیشناستش ... !!!!
اینم متدی که خودش ساخته ... !!!
http://upload7.ir/images/92875546669035230848.png