نمایش نتایج 1 تا 7 از 7

نام تاپیک: باز کردن فایلها با پروژه سی شارپ مانند پلیرها؛ File Association

  1. #1

    Question باز کردن فایلها با پروژه سی شارپ مانند پلیرها؛ File Association

    با سلام و خسته نباشید
    چطور میشه فایلهایی رو با برنامه ای که نوشتیم باز کنیم؟
    یه برنامه نسبتا پیشرفته برای مشاهده و ویرایش تصاویر نوشتم. قابلیت درگ دروپ عادی رو داره که مثلا اگه عکسی رو داخل برنامه درگ کنم، اون عکس رو نمایش میده و اماده ویرایش میکنه.
    حالا فقط میخام اگه عکس روی فایل اجرایی برنامه یا شورتکات برنامه روی دسکتاپ درگ دروپ شد(یا از طریق اپن ویچ جهت اجرا با برنامه ای
    که نوشتم انتخاب شد)، اون رو نمایش بده . مثل ویندوز فوتو ویور یا پینت و غیره...

    یه سوال دیگه اینکه وقتی روی لیبل ها دو بار کلیک میکنیم، متن اون لیبل در کلیپبرد کپی میشه. چطور میشه مانع این کار شد؟

    اگه سوالم رو جای مناسبی مطرح نکردم معذرت میخام

  2. #2

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

    سلام دوست عزیز ، با کد زیر اگر برنامه از طریق drag and drop یک فایل درون برنامه شما باز شده باشه ، آدرس رو بهتون برمیگردونه ::

    string[] args = Environment.GetCommandLineArgs();
    MessageBox.Show(args[1].ToString());

    پ.ن : توی PageLoad بنویسین کد زیر رو

    موفق باشی

  3. #3

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

    واقعا ممنون از دوستان عزیز مشکلم حل شد. aminmousavi ♥لایک با سینتکس♥
    دادا system من حدود یه هفته اس دنبال این کد ها بودم....به هر زبونی هم توی اینترنت گشتم ولی چیزی پیدا نکردم
    سوال دوممو هم کسی میتونه جواب بده؟(وقتی روی لیبل ها دو بار کلیک میکنیم، متن اون لیبل در کلیپبرد کپی میشه. چطور میشه مانع این کار شد؟)
    یه مشکل دیگه در تغیر اندازه عکسها دارم. در قسمت بیتمپ اگه اندازه عکس مثلا بیشتر از 10 هزار پیکسل باشه برنامه گاهی خطا میده
     int width=10000,height=10000;
    Bitmap bitmap = new Bitmap(width, height);

    راه حل چیه؟ از کلاس یا کد دیگه ای نمیشه عکس رو تغیر اندازه داد؟

    چون سوالاتم کوچیک بود تایپیک جدید باز نکردم....ممنون میشم کمک کنین

  4. #4

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

    خواهش میکنم :)
    1 - یعنی چی ؟ رو label عادی دوبار کلیک کنی که توی clipboard ذخیره نمیشه ، حتما کدی روش نوشتین دیگه ، یکم سوالتون ابهام داره !
    2- در مورد دومی هم ، من همچین مشکلی نخوردم ، متن error رو قرار بده شاید بشه راهنمایی کرد .

  5. #5

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

    روز بخیر
    در ویندوز 8.1 روی هر لیبلی که دابل کلیک میکنم متن اون در کلیپبرد ذخیره میشه اما در ویندوز 7 ذخیره نمیشه. نمیدونم چه ربطی به ویندوز داره
    هیچ کدی هم برای ذخیره شدن در کلیپبرد ننوشتم

    در مورد مشکل دوم در ریسایز کردن عکس ها
    وقتی اندازه عکس رو بیشتر از 10000 پیکسل میکنم از خط بیتمپ خطا میگیره که....
    Additional information: Parameter is not valid.
    Clipboarder.2015.01.15-003.png

  6. #6

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

    سلام
    با File Association دیگه تو www.codeproject.com و اینترنت زیاده یا همین سایت
    با Class #C
    http://www.codeproject.com/Articles/...ociation-Class

    با vb.net که سورس کامل

    http://www.codeproject.com/Articles/...tion-in-VB-NET

    ریجستری
    http://www.codeproject.com/Articles/...Associated-Ico

  7. #7

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

    تشکر دوست عزیز xxnagin
    با برسی لینک هایی که دادین، کدهارو برسی کردم و یک کلاس یا فانکشن برای اضافه کردن پسوند فایل به ریجستری نوشتم که شاید به درد دوستان بخوره

    private void messageError(string errorText) { MessageBox.Show(errorText, "Rad Data Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign); }


    public void Create(string fileTypes, string progID, string description, string defaultIcon, string execApp, string[] openWith)
    {
    if (!fileTypes.StartsWith(".") || fileTypes.Length < 3) { messageError("پسوند فایل باید بیشتر از 2 کاراکتر باشد و با دات شروع شود"); }
    else if (progID.StartsWith(".") || progID.Length < 5) { messageError("ایدی کلید برنامه باید بیشتر از 4 کاراکتر باشد و با دات شروع نشود"); }
    else if (description.Length < 5) { messageError("توضیحات برنامه باید بیشتر از 4 کاراکتر باشد"); }
    else if (!File.Exists(defaultIcon)) { messageError("فایل ایکون وجود ندارد"); }
    else if (!File.Exists(execApp)) { messageError("فایل اجرایی وجود ندارد"); }
    else
    {
    try
    {
    if (Registry.GetValue("HKEY_CLASSES_ROOT\\" + progID, "", null) != null)
    {
    int intt = 0;
    for (int trueint = 0; trueint < 1; ) { intt++; if (Registry.GetValue("HKEY_CLASSES_ROOT\\" + progID + "_" + intt, "", null) == null) { trueint = 1; progID += "_" + intt; } }
    }
    RegistryKey key = Registry.ClassesRoot;
    key.CreateSubKey(fileTypes).SetValue("", progID);
    key = key.CreateSubKey(progID, RegistryKeyPermissionCheck.ReadWriteSubTree);
    key.SetValue("", description, RegistryValueKind.String);
    key.CreateSubKey("DefaultIcon").SetValue("", defaultIcon, RegistryValueKind.String);
    key.CreateSubKey(@"Shell\Open\Command").SetValue(" ", "\"" + execApp + "\"" + " %1", RegistryValueKind.String);
    if (openWith.Length > 0)
    {
    key = key.CreateSubKey("OpenWithList", RegistryKeyPermissionCheck.ReadWriteSubTree);
    foreach (string str in openWith)
    {
    key.CreateSubKey(str);
    }
    }
    key.Flush();
    key.Close();
    MessageBox.Show("ذخیره شد");
    }
    catch { messageError("خطا"); }
    }
    }


    نحوه استفاده(مثال)

    Create(".rad", "RadData", "Rad Data New App", "C:\\icon.ico", "C:\\MyApp.exe", new string[] { "WordPad.exe", "IExplore.exe", "notepad.exe" });


    فقط این قسمتش شاید برای بعضیا سوال باشه که چرا توی حلقه اس
    if (Registry.GetValue("HKEY_CLASSES_ROOT\\" + progID, "", null) != null)
    {
    int intt = 0;
    for (int trueint = 0; trueint < 1; ) { intt++; if (Registry.GetValue("HKEY_CLASSES_ROOT\\" + progID + "_" + intt, "", null) == null) { trueint = 1; progID += "_" + intt; } }
    }

    و پاسخ: چون اگه اون کلید(اسم یا ایدی که انتخاب میکنین) قبلا موجود باشه و شما تغیرش بدین، اون برنامه ای که اون کلید رو استفاده میکرده به مشکل میخوره. من تو حلقه کامل برسی میکنم که همچین کلیدی از قبل وجود نداشته باشه
    افرین به خودم
    برنامه باید در حالت ادمین اجرا بشه....چون کاربر فقط میتونه روت ریجستری رو بخونه، نمیتونه چیزی اضافه کنه

    من یه برنامه نوشتم که هم میشه همه پسوندایی که توی ریجستری ذخیره شدنو همراه ایکنشون دید....هم اضافه کرد و هم حذف کرد
    برنامرو برای دانلود میذارم
    Rad Data - File Types On the Registry.rar
    دانلود
    امیدوارم مفید باشه

تاپیک های مشابه

  1. باز کردن فایل فلش در سی شارپ
    نوشته شده توسط mesgar در بخش C#‎‎
    پاسخ: 1
    آخرین پست: شنبه 25 اردیبهشت 1389, 20:05 عصر
  2. باز کردن پسورد اکسس در سی شارپ
    نوشته شده توسط amirfallah3301 در بخش C#‎‎
    پاسخ: 2
    آخرین پست: دوشنبه 10 اسفند 1388, 17:20 عصر
  3. باز کردن فایل دلخواه در سی شارپ
    نوشته شده توسط Rasilinkof در بخش C#‎‎
    پاسخ: 3
    آخرین پست: چهارشنبه 22 مهر 1388, 11:33 صبح
  4. باز کردن فایلها با هر فرمتی در C#‎
    نوشته شده توسط saed2006 در بخش C#‎‎
    پاسخ: 5
    آخرین پست: جمعه 16 مرداد 1388, 20:09 عصر
  5. تابعی برای باز کردن فایلها با ورودی از نوع String.
    نوشته شده توسط Rocker در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: شنبه 26 آبان 1386, 13:58 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •