PDA

View Full Version : سوال: اجرای فایل exe در برنامه



hesam67_b
سه شنبه 19 مرداد 1389, 18:21 عصر
با سلام دوستان خوبم.

من دوتا برنامه نوشتم که در برنامه دوم میخوام برنامه اولی رو که نوشتم فراخوانی کنم.

میدونم که میشه با کد زیر اون رو اجرا کرد


System.Diagnostics.Process.Start("E:/Visual C#/My Exercise/Numbers Game/Numbers Game/bin/Debug/Numbers Game.exe");

اما نمی دونم چطور باید آدرس رو طوری تغییر بدم که اگر برنامه در کامپیوتر دیگه ای اجرا شد با مشکل مواجه نشه.

پوشه برنامه اول رو کجا قرار بدم و آدرس رو چطور تغییر بدم تا توی کامپیوتر های دیگه با مشکل مواجه نشه؟؟؟:متفکر::متفکر:

sayan
سه شنبه 19 مرداد 1389, 18:51 عصر
سلام
تو برنامه ی اولی مثلاْ وقتی برنامه لود شده یا وقتی خروج پیدا میکنه شما یه متد بنویس که آدرس فعلی برنامه رو در یک کلیدی تو ریجستری ذخیره کنه و تو برنامه دومی هم هرجا که نیاز داشتی اون آدرس رو از رجیستری بخون و به متد Process بده اینجوری همیشه برنامه ات درست کار می کنه
-----------
موفق باشی:لبخندساده:

hesam67_b
سه شنبه 19 مرداد 1389, 19:06 عصر
یه راه ساده تر سراغ نداری؟؟

من پوشه برنامه اول رو توی پوشه debug کپی کنم نمیشه؟؟

فقط نمیدونم چطور آدرس رو تغییر بدم:ناراحت::ناراحت:

sayan
سه شنبه 19 مرداد 1389, 19:44 عصر
به نظرم رجیستری خیلی بهتره من خیلی از تنظیمات برنامه ام رو اینطوری انجام میدم
این کلاس توی دو تا برنامه بنویس:


class MyProg
{
RegistryKey regkey;

public bool SaveInRegistery( string subvalue)
{
regkey = Registry.CurrentUser.OpenSubKey("Software", true);
regkey.CreateSubKey("paziresh");
regkey = Registry.CurrentUser.OpenSubKey("Software\\myapp",true);
regkey.SetValue("path", subvalue);
regkey.Close();
return true;

}

public string LoadFromRegistery(string subname)
{
string getData="";
regkey = Registry.CurrentUser;
regkey = regkey.OpenSubKey("Software\\myapp");
if (regkey == null)
return "";
if (regkey.GetValue(subname).ToString() !=null)
if (regkey != null)
{
return getData;
}
else
return "";
}

}

حالا توی برنامه اولت مثلاْ تو فرم لودش اینو بنویس


myprog mp=new myprog();
mp.SaveInRegistery(Application.ExecutablePath);

حالا تو برنامه دومت اونجایی که میخوای برنامه اولت رو فراخوانی کنی اینو بنویس:

البته این کلاس رو اونجا هم باید داشته باشی


myprog mp=new myprog();
System.Diagnostics.Process.Start(mp.LoadFromRegist ery("path"));

امیدوارم موفق باشی

حجتی نیا
سه شنبه 19 مرداد 1389, 19:48 عصر
یه راه ساده تر سراغ نداری؟؟

من پوشه برنامه اول رو توی پوشه debug کپی کنم نمیشه؟؟

فقط نمیدونم چطور آدرس رو تغییر بدم:ناراحت::ناراحت:


application.startuppath+"\\exeName (file://exename/)"

hesam67_b
سه شنبه 19 مرداد 1389, 20:04 عصر
داداش من فولدر برنامه اول رو توی debug برنامه دوم کپی کردم و کد زیر رو قرار دادم

Application.StartupPath + "//Numbers Game/Numbers Game.exe";

ولی خطا میده. :ناراحت:

میشه بیشتر راهنمایی کنی؟؟

مبتدی هستیم و هزار دردسر

حجتی نیا
سه شنبه 19 مرداد 1389, 20:31 عصر
داداش من فولدر برنامه اول رو توی debug برنامه دوم کپی کردم و کد زیر رو قرار دادم

Application.StartupPath + "//Numbers Game/Numbers Game.exe";

ولی خطا میده. :ناراحت:

میشه بیشتر راهنمایی کنی؟؟

مبتدی هستیم و هزار دردسر
برادر \\ نه //

hesam67_b
سه شنبه 19 مرداد 1389, 20:46 عصر
برادر \\ نه //

ممنونم دوست عزیز. با کد بالا موفق نشدم. تا یاد بگیرم طول میکشه :لبخند:

از کد زیر استفاده کردم جواب داد.

System.Diagnostics.Process.Start("//Numbers Game/Numbers Game.exe");

بازم تشکر دوست عزیز.