من یه برنامه ساختم که می خوام مثل برنامه های دیگه با یه کلیک روی فایل های که با اون برنامه ایجاد شده توسط برنامه خونده بشه مثل همه ی برنامه های دیگه
و دیگه مجبور نباشم برنامه رو اجرا کنم و بعد اون فایل رو Open کنم
چطوری می تونم اینکارو بکنم ؟
C#
Printable View
من یه برنامه ساختم که می خوام مثل برنامه های دیگه با یه کلیک روی فایل های که با اون برنامه ایجاد شده توسط برنامه خونده بشه مثل همه ی برنامه های دیگه
و دیگه مجبور نباشم برنامه رو اجرا کنم و بعد اون فایل رو Open کنم
چطوری می تونم اینکارو بکنم ؟
C#
سلام
به تاپیک زیر مراجعه کنید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ممنون کارم تا حدی راه افتاد ولی چه طوری باید بگم که فایل با برنامه من اجرا بشه نه Calclutor
توی این مثال
Microsoft.Win32.Registry.SetValue("HKEY_CLASSES_RO OT\.ali", "", "aliclassname")
Microsoft.Win32.Registry.SetValue("HKEY_CLASSES_RO OT\aliclassname\shell\newmenu", "", "منوی جدید")
Microsoft.Win32.Registry.SetValue("HKEY_CLASSES_RO OT\aliclassname\shell\newmenu\command", "", "calc.exe")
سلام
در کد زیر بجای calc نام برنامه خودتونو بذارید.
موفق باشید.نقل قول:
کد:Microsoft.Win32.Registry.SetValue("HKEY_CLASSES_RO OT\aliclassname\shell\newmenu\command", "", "calc.exe")
اینو که خودم می دونم
خوب نام برنامه یا ادرس ش ؟
باید برنامه رو با اینستالر نصب کرد ؟
اگه برنامه توی system32 هست فقط نام و در غیر اینصورت آدرس...
سلام
این هم یک سمپل ساده که باهاش می تونید به راحتی واسه برنامه تون راست کلیک در ست کنید.
(به کد های متد Install در کلاس InstallRightclick توجه کنید.)
موفق باشید.کد:http://rapidshare.com/files/261474897/MVW-InstallRightclick.zip.html
این مثالتون مورد داره که
بعد از اینکه تنظیماتو انجام می دم می رم اون فایل رو اجرا کنم می گه Access is Denied
یه راه قشنگ : شما از برنامت یه SETUP که میسازی میتونی براش File Acosoation (یه همچین چیزی :دی) بذاری که مثلا فایلای *.rmb با برنامه ی شما باز شه
واقعا راه به این قشنگی ندیده بودم
خیلی حال کردم
یه مشکل دیگه ادرس اون فایلی رو که اجرا شده چطوری می شه گیر اورد ؟
تو کلاس Program تو پرانتز ها میتونی اینو بذاری
char[] args
بعد آدرس فایل های اجرا شده میرن تو این
ببخشید من ویژوال استودیو ندارم نمیتونم تست کنم
کد:Void initialize(char[] args)
{
Application.Start(new Form1);
MessageBox.Show(char[0]);
}
نه منظورم رو متوجه نشدید
ببینید من می خوام ادرس اون فایلی رو روش کلیک می کنم و برنامه اجرا می شه رو یه جوری بگیرم و از روی ادرسش اون فایل رو بخونم
پیشی جون خیلی ممنون
برنامه یه مشکل خیلی کوچیک داشت .
اگر واقعا برنامه نویسید که با کمی بررسی خودتان حل می شد و در غیر اینصورت اینجا...
کد:http://rapidshare.com/files/261782032/MVW-InstallRightclick.zip.html
شما فکر کن من برنامه نویس نیستم ولی شما که هستی چرا مشکلو حل نکردی (درست نشده)
در ضمن مشکل من تقریبا حل شد از این راه حلی که Pishi گفت ولی فقط ادرس فایل رو می خوام
من همچین ادعایی نکردم:13:نقل قول:
شما که هستی
برنامه ی من مشکلی نداره.اینو میگم چون روی 2 تا رایانه بجز رایانه ی خودم(نهایتا میشه 3 تا!) تست شد همین الان.نقل قول:
چرا مشکلو حل نکردی (درست نشده)
لطفا سوال رو واضح تر بپرسید.نقل قول:
فقط ادرس فایل رو می خوام
من این پست رو ندیده بودم...نقل قول:
یه مشکل دیگه ادرس اون فایلی رو که اجرا شده چطوری می شه گیر اورد ؟
می تونید از این کد استفاده کنید :
که مقدار extension و RightclickMenuName رو واسه خودتون تغییر میدید و نهایتا ProgramPath حاویکد:
string extension = "YourFile-Extension";
string RightclickMenuName = "Rightclick menu name";
Microsoft.Win32.RegistryKey SearchedKey =
Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(extension);
string Key2Path = (string)SearchedKey.GetValue("");
Key2Path = Key2Path + "\\" + "shell" + "\\" +
RightclickMenuName + "\\" + "command";
//---------------------------------key2-Path-----------------------
Microsoft.Win32.RegistryKey Key2 =
Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(Key2Path);
string ProgramPath = (string)Key2.GetValue("");
آدرس برنامه خواهد بود.
موفق باشید.
سلام
همانطور که pishi0014 گفتند خود setup سازها امکاناتی برای ثبت یک پسوند به نام برنامه دارند که میتوانید آن را تحت نام File Types Editor در برنامه setup ساز msi داخلی خود VS هم پیدا کنید.
اما مشکل دوم که گفتید:
عجیب است!! برای انکه همچنان جواب pishi0014 در پست 12 صحیح بوده! تست کردید؟نقل قول:
یه مشکل دیگه ادرس اون فایلی رو که اجرا شده چطوری می شه گیر اورد ؟
کاربر pishi0014 یکی از راحت ترین روشها را در پست 12 گفتند که مثلاً نمونه کد کاملترش چنین خواهد بود:
نام های فایلها امکان دارد با یک جفت کتیشن ارسال شوند (معمولاً فاصله دارها) دستور فوق ضمن حذف آن کتیشن، کل آرگومان های ورودی را هم سرچ میکند...کد:public static void Main(string[] args)
{
string filename = null;
if (args != null)
{
foreach (string arg in args)
{
if (((object)arg == null) || (arg.Length <= 1)) continue;
if (arg[0] != '\"')
{
filename = arg;
break;
}
if (arg.Length > 4)
{
filename = arg.Substring(1, arg.Length - 2);
break;
}
}
}
if (!string.IsNullOrEmpty(filename))
{
System.Windows.Forms.MessageBox.Show(filename);
}
//...
البته اگر چندین فایل با برنامه شما همزمان بازشوند همه به ترتیت در آرایه خواهند بود، که دیگر خودتان با کمی دستور اضافه میتوانید حلش کنید.
(کد فوق مهم نیست و همینطوری نوشتم، مهم ان است که نام فایل در آرایه آرگومانم ها است و شما باید استخراجش کنید.)
موفق باشید.
هر کاری کردم نشد
این Args همش null هست که
یکی از فایل های برنامه رو اجرا کردم بازم null بود
اها فهمیدم مشکلش چیه
اینجاش درسته ؟ [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
مشکل از همینه
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اول با تنظیماتی که توسط VS انجام شده بود فایل با اون برنامه ه اجرا می شد در اصل برنامه خودم رو اجرا می کرد ولی نمی دونم مشکلش چیه
ولی وقتی که فایل رو دستی با برنامه خودم باز کردم درست کار کرد
سلام
پس صدردصد ایراد در ثبت پسوند برای برنامه شما است!نقل قول:
این Args همش null هست که
یکی از فایل های برنامه رو اجرا کردم بازم null بود
چطور انجامش دادید؟ از File Types Editorدر msi استفاده کردید؟
یک آرگومان "1%" باید پس از نام فایل exe شما در رجیستری وجود داشته باشد!
"calc.exe "%1
این مسئله را بررسی کنید.
شما از تو properties پروژه ات برو به قسمت Debugger (یه همچین جایی) بعد یه جا نوشته command توش آدرس فایلتو بذار بعد برنامه را اجرا کن ببین باز هم null است؟
اها فهمیدم مشکلش چیه
اینجاش درسته ؟ [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
مشکل از همینه
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اول با تنظیماتی که توسط VS انجام شده بود فایل با اون برنامه ه اجرا می شد در اصل برنامه خودم رو اجرا می کرد ولی نمی دونم مشکلش چیه
ولی وقتی که فایل رو دستی با برنامه خودم باز کردم درست کار کرد
سلام
شما از ویزاد انتشار استفاده کرده اید و این چندان روش مرسوم و استانداردی نیست.
به جایش برای برنامه خودتان یک Setup رسمی درست کنید ...
پروژه Setup گزینه های تنظیمی بیشتر و دلخواه تری را در اختیار شما قرار میدهد و نتیجه اش بهتر است ...
Other Project Types->Setup and Deployment->Setup Project
1)
سپس به تنظیمات بروید ...
Project->Properties->Prerequisites
پیش نیازهایی که باید برای برنامه تان نصب شود را انتخاب کرده و تیک بزنید ...
مثلاً Installer3.1 یا Framework2.0 یا SQLServer Express یا Crystall و...
سه تا دکمه رادیویی در انتهای دیالوگ وجوئد دارد که باید در وضعیت وسط قرار داده شود.
2)
از Solution Explorer گزینه File System Editor را انتخاب کرده و فایلهای exe و ico و mdf و mdb و dll و... که باید کپی شود را به Application Folder اضافه کنید.
میتوانید Shortcut هایی هم برای Desktop و StartMenu تآیین کنید.
3)
از Solution Explorer گزینه File Types Editor را انتخاب کرده.
با راست کلیک میتوانید موارد جدید را اضافه کنید و در پنجره کوچک Properties گزینه های مختلف مثل پسوند و آیکون و آرگومان و... را تنظیم کنید.
میتوانید انواع منوهای دیگر را هم اضافه کنید مثلاً Open و Edit و Print و...
این ابزار بسیار قدرتمند و منعطف است ...
میتوانید تنظیماتی هم برای رجیستری تایین کنید و یا اعمال خاص و ویژه ای برای حین Install و Uninstall با کدهای VbScript و یا کدهای مدیریت شده دات نتی تایین کنید و...
پیشنهاد میکنم به عنوان یک روال روتین سعی کنید همواره در کنار پروزه اصلی یک پروژه Setup مخصوص ان پروژه هم داشته باشید تا تضمینی باشد بر نصب آسان و انتشار برنامهدر سایر رایانه ها.
(البته برای ساخت این پروژه هم میتوانید از ویزاد استفاده کنید.)