PDA

View Full Version : ساخت یک exe که هم بتونه با پارامتر اجرا بشه هم بدون ارسال پارامتر



behrad110
یک شنبه 07 فروردین 1390, 12:12 عصر
با عرض سلام و تبریک سال نو خدمت دوستان
من میخواستم یک فایل اجرایی درست کنم که هم بتونه توسط یک exe دیگه با ارسال پارامتر فراخوانی بشه و هم خود فایل اجرایی اصلی به طور مجزا فراخوانی بشه . یعنی اگه پارامتر ارسال شد که با دریافت پارامتر ورودی کار بکنه در غیر این صورت پارامتر رو از کاربر بگیره.
مشکل اینجا است که از طرفی در void main حتما باید آرایه ارسال کنم و از طرفی آرایه ها نمی تونن پارامتر آپشنال باشند دوستان راه حلی ارائه کنن خیلی ممنون میشم

Directx
یک شنبه 07 فروردین 1390, 12:34 عصر
خوب دوست عزیز معمولا بعد از اینکه پارامترهایی به تابع main ارسال میشه با یه متدی چیزی اونو چک می کنند خوب شما هم می تونید اون آرایه تون رو چک کنید به عنوان مثال می تونید چک کنید که ایا اصلا پارامتری فرستاده شده یا نه(به وسیله اندازه ی طول پارامتر که 0 هست یا نه) بعد بگید اگه پارامتر فرستاده شده بود یا فرستاده نشده بود کدوم کارو انتخاب کنه
در ضمن قبل مطرح کردن سوال بهتره یه سرچ بزنید

behrad110
یک شنبه 07 فروردین 1390, 12:44 عصر
شما منظور من رو کامل متوجه نشدید. وقتی یه exe در main با پارا متر ارسال میشه در فرم لود منتظر یک آرایه است اما وقتی میخواد به تنهایی اجرا بشه تو فرم لود نیاز به پارا متر نداره در مرحله بعدی این رو میگیره. پس در حالت عادی اگه رو exe کلیک کنید exeption میده چون بدون پارامتر اجرا شده

Directx
یک شنبه 07 فروردین 1390, 12:58 عصر
دوست عزیز شما دارید یک آرایه رو به تابع main ارسال می کنید و وقتی شما بدون پارامتر اون رو اجرا می کنیدیعنی یک آرایه ی صفر به اون ارسال کردید شما می تونید امتحان کنید تابع main ی که پارامتر داره رو بدون پارامتر اجرا کنید
توصیه می کنم بیشتر راجع به command line و ارسال پارامتر مطالعه کنید.

behrad110
یک شنبه 07 فروردین 1390, 13:10 عصر
خیر اینطور که شما میگید نیست index out of band میده

Directx
یک شنبه 07 فروردین 1390, 13:12 عصر
شرط گذاشتین؟ مثلا تو main

if(args.Length>=1)
MessageBox.Show("ّFirst argoment is " + args[0].ToString());

behrad110
یک شنبه 07 فروردین 1390, 13:15 عصر
فکر میکنم اگر یه برنامه کوچیک ضمیمه کنم قضیه روشن تر بشه

Directx
یک شنبه 07 فروردین 1390, 13:22 عصر
اگه کدتو بزاری شاید بتونم بگم

behrad110
یک شنبه 07 فروردین 1390, 13:34 عصر
دو تا تیکه کد کوچیک نوشتم که منظورم رو برسونه برنامه ای که به اسم اejraeeهست برنامه ای هست که فراخوانی میشه و من میخوام این قابلیت رو داشته باشه که هم بتونه به تنهایی اجرا بشه و هم بتونه توسط برنامه pass parametr که برنامه ارسال کننده پارامتر هست فراخوانی بشه

behrad110
یک شنبه 07 فروردین 1390, 13:37 عصر
فقط آدرس فایل Exe که قرار هست اجرا بشه باید به آدرس فایل در pc خودتون تغییر کنه

Directx
یک شنبه 07 فروردین 1390, 13:42 عصر
دوست عزیز و گرامی برنامه ای اولتونو دیدم شما اومدید پارامترها رو هنگام ساخت form دریافت گردید معلومه که درست اجرا نخواهد شد شما فایل program.cs رو باز کنید و پارمترها رو به تابع main ارسال کنید

اگه بخواهین کد میزارم

behrad110
یک شنبه 07 فروردین 1390, 13:53 عصر
با تشکر از اینکه وقت میذارید اگه امکان داره هر دو تا برنامه رو با هم run کنید و نظرتون رو بگید الته من در program.cs هم یه کار هایی کردم که برای این منظور که یک برنامه یه برنامه دیگه رو فراخوانی کنه و بهش پارامتر ارسال کنه درست کار میکنه اما خودش به تنهایی قابلیت اجرا رو نداره ودر ضمن اگه نظر دیگه ای راجع به انجام این کار دارید اگهیه برنامه کوچیک بذارید که این کار رو انجام بده ممنون میشم

Directx
یک شنبه 07 فروردین 1390, 14:11 عصر
دوست عزیر براتون یه نمونه برنامه میذارم فقط به فایل program.cs دقت کنید
در ضمن برای اجرای فایل اجرایی با پارامتر کافیه یه فایلو بگیری تو فایل اجرایی برنامه درگ کنید.همنطور که میدونید با این کار آدرس فایل به عنوان پارامتر به برنامه ارسال می شه اینم نمونه برنامه
این دکمه ی تشکرو فشار بدی کافیه برا تشکر:لبخند:

behrad110
یک شنبه 07 فروردین 1390, 14:29 عصر
برنامه شما در program.cs تقریبا همون کاری هست که من کردم با این تفاوت که شما یک کاندیشن هم گذاشتی اجازه بدید واضح تر بگم که کل برنامه چی هست فرض کنید یک سوییچ برد دارید که کارش اینه که بعد از اینکه user رو شناسایی کرد و user name و پسورد رو گرفت به کاربر اجازه میده که به همه برنامه هایی که تو این سوییچ برد هست دسترسی داشته باشه. حالا من میخوام برنامه ام طوری باشه که اگه از طریق سوییچ برد فراخوانی شد که قبلا شناسایی کاربر انجام شده و کافیه پارامتر پاس داده بشه و برنامه باز بشه در غیر این صورت از کاربر user name و پسورد گرفته بشه بدون اینکه پارامتر ارسال بشه

Directx
یک شنبه 07 فروردین 1390, 14:41 عصر
ایده ی بدی نیست و شما می تونید همون کاری که من کردم انجام بدید منتها اگه طول اون آرایه صفر باشه بیایید یوزر و پسورد بگیرید