PDA

View Full Version : حذف راست کلیک از روی فلش در windows forms



bahar_engineer
سه شنبه 20 اسفند 1387, 16:53 عصر
در اینجا یه سوال دارم از اساتید محترم:
من از کامپوننت shock flash ... استفاده کردم برای نمایش فلش که وقتی فلش اجرا می شه مثل صفحات وب تابلوه که فلشه . وقتی روش کلیک راست می کنیم همون پنجره باز می شه که quality و ... اطلاعات فایل فلش رو نشون می ده.
راهی هست که اصلاً مشخص نشه که این فایل یه فایل فلشه ؟
ممنون می شم راهنمایی کنین. البته پست ها رو در این زمینه خوندم اما زیاد متوجه نشدم.
بتونم این منوی راست کلیک رو بردارم خیلی خوبه!
در ضمن من یک پوشه توی debug ساختم به نام flash و فایل های فلشم رو در اون ریختم . آیا امنیت اونها حفظ می شه! نمی خوام کسی مستقیم دسترسی داشته باشه.
با سپاس فراوان

zrahimic
چهارشنبه 21 اسفند 1387, 10:00 صبح
در پنجره ای که آبجکت فلش رو قرار دادید، یک هندلر برای رویداد کلیک راست موس بسازید و کلیک راست آن را خودتان کنترل کنید.

bahar_engineer
چهارشنبه 21 اسفند 1387, 11:21 صبح
سلام ممنون از کمکتون اما ممکنه بگین چطور هندل کنم؟
منظورتون اینه که یه تابع بذارم برای راست کلیک؟
اگه اینطوره چطور راست کلیک رو از اونجا کنترل کنم؟

NewFoxStudent
چهارشنبه 21 اسفند 1387, 15:21 عصر
توی رویداد Form_Load فرمی که از این کنترل استفاده کردید کد زیر رو بنویسید



ObjectName.MouseClick += newMouseEventHandler(ObjectName_MouseClick);


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



void ObjectName_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
//کدی که میخواهید در هنگام راست کلیک اجرا بشه اینجا بنویسید
}
}


ObjectName نام کنترلی هست که میخواهید روییداد راست کلیکش رو هندل کنید

ariyanna
پنج شنبه 22 اسفند 1387, 12:33 عصر
سلام ببخشید مناین کد رو داخل فورمم قرار می دم اما دستورات داخل تابع اجرا نمی شه
من دقیقا همین مشکلرو هم با sendcompelete در تشخیص ارسال ایمیل دارم، برنامه هیچ خطا یا warning نمی ده اما کدهای داخل تابع اجرا نمی شه چــرا ؟

SmtpClient sm = new SmtpClient();
sm.SendCompleted += new SendCompletedEventHandler(sm_SendCompleted);

}

void sm_SendCompleted(object sender, AsyncCompletedEventArgs e)
{
throw new NotImplementedException();
}

newgoldenman
پنج شنبه 22 اسفند 1387, 15:51 عصر
سلام
اینم از كلاسی كه دنبالش هستید. كافیه تا شیء فلش داخل فرمتون رو از این كلاس كه براتون قرار دادم به ارث ببرید! همین.

using System;
using System.Collections.Generic;
using System.Text;
namespace ColuredPencil
{
class ShockwaveNGM : AxShockwaveFlashObjects.AxShockwaveFlash
{
#region Const
const int WM_RBUTTONDOWN = 0x0204;
const int WM_RBUTTONDBLCLK = 0x0206;
const int WM_ACTIVATE = 0x06;
const int WM_KEYDOWN = 0x0100;
#endregion
public ShockwaveNGM()
{
//Class Designer
}
protected override void WndProc(ref System.Windows.Forms.Message m)
{
switch (m.Msg)
{
case WM_RBUTTONDOWN:
//Activate below code will show the MessageBox to user when RightClick occurs
//System.Windows.Forms.MessageBox.Show("Disable Right Click Menu", "Right Click");
m.Msg = 0;
break;
}
base.WndProc(ref m);
}
}
}موفق باشید.

bahar_engineer
دوشنبه 26 اسفند 1387, 16:41 عصر
سلام
من کد زیر رو استفاده کردم برای ساختن یک آبجکت از کلاسی که شما گفتین
اما error می ده



ShockwaveNGM myflash = new ShockwaveNGM();
myflash.Movie = System.IO.Path.Combine(System.IO.Directory.GetCurr entDirectory(), "logo.swf");

newgoldenman
دوشنبه 26 اسفند 1387, 22:05 عصر
بازم سلام!
1: كلاسی كه بهتون دادم رو به پروژه تون اضافه كنید.
2: یدونه كامپوننت axShockwaveFlash به فرمتون اضافه كنید.
3: كلاس Designer فرمتون رو باز كنید. در آخرین سطور كدها، سطر كد اعلان كامپوننت فلشتون رو پیدا كنید و به این مقدار تغییرش بدید:

private ShockwaveNGM axShockwaveFlash1;
4: داخل همین كلاس، درون متد InitializeComponent كلاس فرمتون، كد سازنده كمپوننت فلشتون رو پیدا كنید و به این مقدار تغییرش بدید:

this.axShockwaveFlash1 = new <Your Project namespace>.ShockwaveNGM();
5: پایان!

میتونین توی كلاسی كه براتون قرار دادم، درون قسمت case موجود، هر كدی كه دلخواهتون هست قرار بدین تا در حین راست كلیك اجرا بشن.

داخل پرانتز:
توی نمونه كدتون كه قرار دادین، میتونین از این كد مشابه هم استفاده كنید كه ساده تر و كوتاه تره:

myFlash.Movie = Application.StartupPath + @"\logo.swf";

امیدوارم توضیح كاملی داده باشم. اگر باز هم مشكلی بود، و یا در مورد امكانات ،ویژگی ها،متد های این كامپوننت و ... در خدمتم!
موفق باشید.

bahar_engineer
سه شنبه 27 اسفند 1387, 09:57 صبح
سلام ممنونم اما من دقیقاً این کارها رو انجام دادم :
خطای زمان runtime اینه :

an unhandled win32 exception occurred in aa.vshost.exe [200].

این یه پروژه تسته که می خوام روی اون فلش رو درست کنم بعد به پروژه اصلی انتقال بدم...

می ذارم اینجا خودتون ببینید. فقط یه فلش توشه با همون کلاسی که شما لطف کردین گذاشتین
خیلی ساده است...

newgoldenman
چهارشنبه 28 اسفند 1387, 22:57 عصر
باز هم سلام.
وقتی پروژه تون رو تست كردم، و دیدم كه خظا داره، شاخ در آوردم!!! چون با نظگاه سطحی كه به كدهاتون داشتم، همه چیز سر جاش بود! ولی دلیل خطا اینه كه، شما میخواهید از روی یك كلاس به ارث گرفته شده، آبجكتی بسازید و از اون استفاده كنید! در واقع شما اینكار شدنی هست، ولی باید برای اون سازنده ی مناسبی بكار برد، چون یك وارث ناقص هست!
توی رویداد Load فرمتون، این خط رو پاك كنید:

ShockwaveNGM myflash = new ShockwaveNGM();
چرا كه شما یك آبجكت فلش روی فرمتون قرار دادین، به نام axShockwaveFlash1 و نیازی نیست كه دوبره آبجكتی بسازید.
بنابراین بایستی فرخوانی فایل از دیسك رو بدین ترتیب تغییر بدین:

axShockwaveFlash1.Movie = Application.StartupPath + @"\logo.swf";

موفق باشید.

bahar_engineer
شنبه 15 فروردین 1388, 09:12 صبح
از کاربر محترم newgoldenman (http://www.barnamenevis.org/forum/member.php?u=29000) کمال تشکر را دارم
مسئله حل شد