PDA

View Full Version : سوال: اجرای برنامه و دریافت نام فایل در صورت دابل کلیک روی فایل؛ File Association



saeed729
سه شنبه 19 خرداد 1394, 20:12 عصر
سلام دوستان.

من یک برنامه Notepad نوشته ام.

سوال ؟
به نظر شما چه طوری میشه زمانی که فایلی را با پسوند دلخواه ذخیره میکنیم، الزاما از طریق گزینه ی open برنامه محتوای فایل باز نشود، بلکه با دوبار کلیک بر روی فایل ذخیره شده برنامه به همراه محتوای آن باز شود. در واقع خود برنامه گزینه ی open with مربوط به پسوند دلخواهمان را تشخیص و اجرا کند. نه اینکه خود کاربر به صورت دستی گزینه ی open with را بر روی برنامه تنظیم کند ؟

با تشکر.

Mahmoud.Afrad
سه شنبه 19 خرداد 1394, 22:15 عصر
برای اینکه پسوند خاصی با برنامه شما باز بشه باید از رجیستری اقدام کنی. البته توسط برنامه خودت هم میتونی این تغییر رو بدی.
http://www.codeproject.com/Articles/43675/C-FileAssociation-Class
http://www.codeproject.com/Articles/17023/System-File-Association
http://barnamenevis.org/showthread.php?482545

برای اینکه در صورتی که فایل با برنامه های دیگه مثل notepad باز شد اطلاعات نامفهوم باشه و فقط با برنامه شما قابل دیدن باشه کافیه از الگوریتم های رمزنگاری استفاده کنید. encryption رو در همین تالار جستجو کنید نتایج خوبی بدست میارید.

shadi khanum
چهارشنبه 20 خرداد 1394, 07:23 صبح
واسه اون پسوند دلخواهت برو MIME TYPE تعریف کن. اینجوری هر وقت روی اون فابل مورد نظر با پسوندی که مد نظرتونه دابل کلیک میکنید با برنامه شما بازش میکنه

reza_ali202000
چهارشنبه 20 خرداد 1394, 09:35 صبح
برا شناسایی فایل بهترین راه حل اینه که توی setup سازی این کار انجام بشه. که خود دات نت این قابلیت رو داره.
برا خوندن فایل باید فایل config رو به صورت زیر تغییر بدین

static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
ExampleSimpleSurfaceGrid3D MyMainForm = new ExampleSimpleSurfaceGrid3D();
Application.Run(MyMainForm);
}



static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);

ExampleSimpleSurfaceGrid3D MyMainForm = new ExampleSimpleSurfaceGrid3D();

if (args.Length > 0)
{
MyMainForm._pathingg = args[0];


}
Application.Run(MyMainForm);
}

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

saeed729
چهارشنبه 20 خرداد 1394, 10:22 صبح
ممنون میشم توضیح بدید که MIME TYPE چیه ؟

reza_ali202000
چهارشنبه 20 خرداد 1394, 23:29 عصر
mime type در واقع عملی هس که کلیدی در ریجستری تعریف میشه که اگه فایلی با فلان پسوند بود با فلان نرم افزار که در فلان ادرس کامپیوتر قرار داره بازش کن.