• FileAssociation در سی شارپ
    #1
    Note 
    سلام.
    من واسه اینکه تمامی فایلهای pashmakproj رو بتونم با برنامه ی اختصاصی خودم باز کنم، این کد رو استفاده کردم:
    کلاس:
    کد:
        public class FileAssociation
        {
            public static void Associate(string extension,
                   string progID, string description, string icon, string application)
            {
                Registry.ClassesRoot.CreateSubKey(extension).SetValue("", progID);
                if (progID != null && progID.Length > 0)
                    using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(progID))
                    {
                        if (description != null)
                            key.SetValue("", description);
                        if (icon != null)
                            key.CreateSubKey("DefaultIcon").SetValue("", ToShortPathName(icon));
                        if (application != null)
                            key.CreateSubKey(@"Shell\Open\Command").SetValue("",
                                        ToShortPathName(application) + " \"%1\"");
                    }
            }

            public static bool IsAssociated(string extension)
            {
                return (Registry.ClassesRoot.OpenSubKey(extension, false) != null);
            }

            [DllImport("Kernel32.dll")]
            private static extern uint GetShortPathName(string lpszLongPath,
                [Out] StringBuilder lpszShortPath, uint cchBuffer);

            private static string ToShortPathName(string longName)
            {
                StringBuilder s = new StringBuilder(1000);
                uint iSize = (uint)s.Capacity;
                uint iRet = GetShortPathName(longName, s, iSize);
                return s.ToString();
            }
        }
    استفاده:
    کد:
                FileAssociation.Associate(".pashmakproj", "02639d71-0935-35e8-9d1b-9dd1a2a34627", "Pashmak Project",
                        @"C:\Users\Pashmak\Desktop\icon.ico",
                       @"C:\Users\Pashmak\Desktop\wppp.exe");
    کدِ هیچ مشکلی نداره و تمامی فایل های pashmakproj رو با برنامه ـم باز میکنه.
    تنها مشکلی که هست اینه که چطوری باید وقتی کاربر روی یکی از پروژه ها کلیک کرد،اطلاعات اون پروژه به برنامه داد؟
    الان من یک قسمت Open Project رو هم توی برنامه ـم گذاشتم که کاربر میتونه دستی پروژه رو انتخاب کنه و بعد از انتخاب اون اطلاعات  به برنامه داده میشه.(این قسمت درسته)
    میخوام بدونم چطوری باید کاری کرد وقتی برنامه بسته هست، و کاربر روی یکی از پروژه ها کلیک میکنه اون اطلاعات رو به برنامه داد؟
    مثل خیلی از برنامه ها از جمله خود ویژوال استودیو.
    راجع به عنوان هم ببخشید نمیدونستم چی بزارم.

    ممنون

    See your dreams every where  and every time , try to remember your dreams because a man lives with his dreams forever
    پاسخ
    #2
    سلام
    مسیر فایل باز شده تو آرگومان متد Main قرار میگیره. فقط کافیه به شکل زیر دریافتش کنید:

    کد:
    .
    .
    .
           /// <summary>
           /// The main entry point for the application.
           /// </summary>
           [STAThread]
           static void Main(string[] args)
           {
               if (args.Length != 0)
               {
                   string file = args[0];
                   MessageBox.Show(file);
               }
    .
    .
    .

    اینجا متغیر file حاوی مسیر فایل باز شده است که میتونید کاراتون رو انجام بدید.

    پاسخ
    ایجاد موضوع جدید   پاسخ به موضوع  

    موضوعات مرتبط با این موضوع...
    موضوع نویسنده پاسخ بازدید آخرین ارسال
    Note کتاب آموزش Parse کردن یک خبر خوان وردپرسی برای ویندوزفون The Arrow 0 1,562 23-04-2015 ساعت 09:24
    آخرین ارسال: The Arrow
    Note سوال ساخت تقویم فارسی در ویندوز 8.1 The Arrow 2 1,582 16-01-2015 ساعت 00:32
    آخرین ارسال: The Arrow
    Note دیتابیس SQLite در سی شارپ The Arrow 3 3,418 07-11-2014 ساعت 22:40
    آخرین ارسال: VBProgrammer
    Note آموزش کامل سی شارپ (ویدئو) xMAN 2 892 02-10-2014 ساعت 12:50
    آخرین ارسال: xMAN
    Note explorer سی شارپ cMan 1 639 30-08-2014 ساعت 12:07
    آخرین ارسال: SOFTAFZAR
    Note پیدا کردن متن در سی شارپ arfanz 7 1,327 27-08-2014 ساعت 01:10
    آخرین ارسال: The Arrow
    Note برنامه نویسی موازی با سی شارپ xMAN 0 579 05-08-2014 ساعت 12:01
    آخرین ارسال: xMAN
    Note جستجو در یک متن در سی شارپ arfanz 12 3,121 16-07-2014 ساعت 09:32
    آخرین ارسال: Stack OverFlow
    Note مخفف کنترلهای سی شارپ mshayan 2 1,177 15-07-2014 ساعت 13:32
    آخرین ارسال: mshayan
    Note فرم 1 بعد از چند ثانیه بسته شود و فرم 2 باز شود. سی شارپ davoodshahveisi 4 1,391 23-06-2014 ساعت 14:09
    آخرین ارسال: Stack OverFlow

    کاربرانِ درحال بازدید از این موضوع:   1 مهمان