سلام ... خسته نباشید .... من چندتا فایل فلش دارم ... میخواستم بزارمش تو ریسورس برنامه و از ریسورس فراخوانیش کنم ... میخوام کاربر نتونه هیچ جوره بهش دسترسی داشته باشه و بدزدتش ... !!!
چطور این کارو بکنم ؟؟؟؟
سلام ... خسته نباشید .... من چندتا فایل فلش دارم ... میخواستم بزارمش تو ریسورس برنامه و از ریسورس فراخوانیش کنم ... میخوام کاربر نتونه هیچ جوره بهش دسترسی داشته باشه و بدزدتش ... !!!
چطور این کارو بکنم ؟؟؟؟
برای استفاده از 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 هم شئ فلش پلیر.
چجوری فایلو به ریسورس اضافه کنم ؟؟؟
solution explorer-->properties -->resource-->add resource
اگه میخوای فایل اضافه کنی از کنار همین گزینه (نوشته string ) کلیک کن گزینه فایل رو انتخاب کن و add resource بزن
دسترسی به ریسورس ها
string i = Properties.Resources.اسم فایل;
موفق باشی
1.JPG
این نحوهی دسترسی ==che_3_taie.Items.Add(Resources.FormInout1.Ashpaz .CheckBox1);m
کد دسترسی که دوستمون بالا نوشته درسته ...
موفق باشی...
چـــــــــــــــــرا واس من اسمش تو ریسورس نیست ؟؟؟؟
دوست عزیز شما پوشه ی Resources ایجاد کردی اما فایل Resources که پسوند resxداره نه .... به عکسی که فرستادم دقت کن...اگه اشتباه نکنم شما برای دسترسی به آدرس باید از Application.StartupPath استفاده کنی...
من میخوام فایل فلش داخل برنامه ام باشه نه کنار برنامه ... نمیخوام کسی بتونه فایل فلشمو کپی کنه و کلا بهش دسترسی داشته باشه ... ( اینطوری ممکنه دزدیده بشه ) .. !!!!
شما دقت کن ..... اسم عکس میاد ولی اسم فلش نمیاد .. !!! مشکل من اینه ... !!!!
عکس شبیه به پروپرتی داده .. فکر نکنم بتونی ازش استفاده کنی... اما برای در امان ماندن فایل فلش ....
چرا ... میتونم ار عکسی که تو ریسورسه استفاده کنم ... !!!!!
فقط میخوام بدونم چرا اسم فلش تو کدنویسی نمیاد ... شرایطش عین عکسه ... !!!!
حتی یه فایل resx رو تعریف کردم و داخل اون فلش رو گذاشتم ولی افاقه نکرد ... !!
درود بر شما
بهتر بود راهی رو که دوست بسیار محترم آقا محمود پیشنهاد داده بودند رو پی می گرفتید اما قبول دارم که این کار یه خورده دقت وحساسیت لازم داره
من یه خورده براتون توضیح می دم ویه نمونه هم ضمیمه خواهم کرد
1 . ابتدا دوتا dll مربوط به اجرای فایلهای فلش رو به ریسورس پروژه تون اضافه می کنین به عبارتی فایلهای : Interop_ShockwaveFlashObjects و AxInterop_ShockwaveFlashObjects
2 . سپس فایل فلشی رو هم که دوست دارین توی برنامتون ازش استفاده بشه رو هم به ریسورس پرو ژه تون اضافه می کنین
بااین حساب رسورس پروژه تون بایستی به این شکل دربیاد :
444444.jpg
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);
}
این هم نمونه برنامه لود فلش از ریسورس پروژه :
آخرین ویرایش به وسیله khokhan : چهارشنبه 20 شهریور 1392 در 21:38 عصر
این چرا ارور میده ؟؟؟
اره رو سیستمم نصبه ... !!!
micromedia flash player 8.2
من بخوام رو سیستم مشتری برنامه رو ران کنم کنم باید فلش پلر نصب باشه ؟؟؟
مگه ابجکت به تنهایی کافی نیست ؟؟؟
آبجکت کار خودش رو می کنه اما اگه پلیر نصب نباشه ارور می ده که ریجستری درست انجام نشده
پلیر 11 رو نصب
545454.jpgکنین
این کفاف میده ؟؟؟؟
اینو امتحان کن :
لینک
نشد بازم سینتکس ارور میده
این متد رو کلا کامنت شون کن :
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);
}
}
اینو الان دیدم... ببین انگاری نمیشناستش ... !!!!
اینم متدی که خودش ساخته ... !!!