PDA

View Full Version : سوال: Command (فراخوانی برنامه با فایلی خاص) File Association



praise
یک شنبه 13 آذر 1390, 18:46 عصر
سلام
چطور میشه فهمید چه فایلی برنامه ما را فراخوانی کرده؟!
به عنوان مثال مدیا پلیر چطور می فهمه یه فایل mp3 باعث باز شدنش شده و باید اون رو پخش کنه؟!
ممنون از راهنمایی تون!
:قلب:

Mahmoud Zaad
یک شنبه 13 آذر 1390, 19:21 عصر
سلام
http://barnamenevis.org/showthread.php?305878-ذخیره-فایل-با-فرمت-مخصوص

abdullah20
یک شنبه 13 آذر 1390, 19:27 عصر
منظورت اینه که مثلا اگر یه برنامه نمایش عکس داشته باشیم وقتی روی یه عکس دابل کلیک کردیم با برنامه ما نماش داده بشه؟

praise
دوشنبه 14 آذر 1390, 02:38 صبح
منظورت اینه که مثلا اگر یه برنامه نمایش عکس داشته باشیم وقتی روی یه عکس دابل کلیک کردیم با برنامه ما نماش داده بشه؟

بله دقیقاً منظورم همین بود؛ البته منظورم File Association نیست، مثلا تو مثال شما فرض بر این است که با دابل کلیک روی فایل های گیف توی کامپیوتر نرم افزار من باز می شه حالا سوال اینه که حالا که نرم افزار من باز شده از کجا بفهمه با کدوم فایل باز شده.

آقای maysamfthi از مطلب شما استفاده کردم ولی توی سی شارپ تابع Main هیچ آرگومانی نداره:
public Main()
{
InitializeComponent();
}
و توی فایل سازنده یعنی program.cs هم به صورت زیر اومده:
Application.Run(new Main());
چیکار کنم؟!
ممنون از راهنماییتون.

mohammad272005
دوشنبه 14 آذر 1390, 03:21 صبح
ویندوز مگرده و تابع Main رو پیدا میکنه. اگه آرگومان داشته باشه، بهش پاس میده. اگه نه، ارگومانها رو از بین میبره. کافیه شما خودت به تابع Main، پارامتر اضافه کنی. به این صورت:
static void Main(string[] args)

praise
دوشنبه 14 آذر 1390, 03:36 صبح
ویندوز مگرده و تابع Main رو پیدا میکنه. اگه آرگومان داشته باشه، بهش پاس میده. اگه نه، ارگومانها رو از بین میبره. کافیه شما خودت به تابع Main، پارامتر اضافه کنی. به این صورت:
static void Main(string[] args)

این رو امتحان کردم ولی توی فایل program.cs ارور میده که آرگومان نداره چرا که به این صورته:
Application.Run(new Main());

و یه ارور دیگه هم به صورت
'Main': member names cannot be the same as their enclosing type
میده

mohammad272005
دوشنبه 14 آذر 1390, 04:21 صبح
شما دوتا Main رو با هم اشتباه گرفتی. Main، متد اصلی برنامه هست و Main دوم اسم فرم اصلی برنامه هست.
کد نمونه:

[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1());
}

Mahmoud Zaad
دوشنبه 14 آذر 1390, 09:05 صبح
سلام
شما اگه فقط نام و آدرس فایل باز شده رو میخوای می تونی توی لود یکی از فرم ها یا توی Click یه باتن و ... کدهای زیر رو بنویسید کاری هم به program.cs ندارید:

string[] commandLineArgs = Environment.GetCommandLineArgs();
//آرگومان صفر نام و آدرس فایل اجرایی رو بر می گردونه
this.textBox1.Text = commandLineArgs[0];
//آرگومان بعدی نام و آدرس فایل باز شده رو بر می گردونه
if (commandLineArgs.Length > 1)
{
this.textBox2.Text = commandLineArgs[1];
}
البته شما باید از برنامه ستاپ بسازید و یک فایل رو مشخص کنید که با برنامه شما باز بشه و بعد نتیجه رو ببینید.
همچنین می تونید فایل program.cs رو به شکل زیر تغییر بدید، در این حالت باکلیک بر روی فایل مورد نظر یه نمونه از فرم 1 ساخته میشه و در تکست این فرم آدرس و نام فایل نمایش داده میشه:

staticvoid Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Form1 f1 = newForm1();
if (args.Length == 1)
{
f1.Text=args[0];
}
Application.Run(f1);
}

praise
دوشنبه 14 آذر 1390, 11:39 صبح
ممنون دوستان مشکل برطرف شد؛ واقعاً لطف کردین
حالا یه سوال دیگه که البته ربطی به این موضوع نداره.
توی فرم من Event برای خوندن کلیدی که کاربر فشار میده (Key Down) تعریف کردم ولی این Event کلید های Left Arrow و Right Arrow رو نمی خونه
من می خوام به عنوان مثال فایل بعدی همون فولدر رو بخونم به کلید های چپ و راست کی بورد
آیا باید Event، Key Down رو برای این کار مربوط به فرم تعریف کنم یا یه Event دیگه.
باز هم ممنون دوستان خوب!
:قلب: