PDA

View Full Version : سوال: ایجاد ارتباط بین دو برنامه مجزا یی که نوشتیم ... دسترسی به فرم های یک برنامه از برنامه ای دیگر ...



ostovarit
سه شنبه 23 شهریور 1389, 12:44 عصر
با سلام و خسته نباشید
در یکی از برنامه هام یک فرم ارسال ایمیل دارم.
در برنامه دیگرم یک وب Browser دارم.
برای هر کدوم دو تا exe مجزا درست کردم که برای باز کردن Browser نیاز به باز کردن برنامه دیگه نباشه و راحت قابل دسترسی باشه...
حالا میخوام وقتی در Browser روی دکمه ارسال ایمیل کلیک کردم برنامه اولم باز بشه و فرم ارسال ایمیل با پارامتر هایی که بهش ارسال میکنم نمایش داده بشه ( مثلا ادرس گیرنده در قسمت to نوشته شده باشه) ... و عکس این قضیه اگر بخوام وقتی در برنامه اول رو لینکی کلیک شد Browser خودم باز بشه با ادرس اون لینک چه باید کنم؟

مثال:
کد زیر یک ماشین حساب باز میکنه حالا من میخوام فایل exe منو باز کنه و اون فرمی رو که میخوام توش نمایش بده مثلا Form1 و بعد یک پارامتر هم بهش ارسال کنه مثلا یک String


Process.Start("calc.exe");

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

=====================
از دوستانی که راهنمایی میکنند ممنونم ...

hamzehsh
سه شنبه 23 شهریور 1389, 13:59 عصر
خب راستش توضيح بيشتر بدي بد نيست.
چون متوجه منظور نهاييت نشدم

ostovarit
سه شنبه 23 شهریور 1389, 14:03 عصر
خب راستش توضيح بيشتر بدي بد نيست.
چون متوجه منظور نهاييت نشدم
یک browser دارم توش یک button هست میخوام وقتی روی اون کلیک شد برنامه ارسال ایمیلم که یک برنامه مجزاست باز بشه و فرم مربوط به ارسال ایمیل نمایش داده بشه و در تکست باکس To آدرس ایمیلی رو که بهش میدم نمایش بده ...

خلاصه مطلب : اجرای یک فرم از یک برنامه توسط برنامه ای دیگر و ارسال پارامتر ... ( به سورس هر دو برنامه دسترسی دارم)

fjm11100
سه شنبه 23 شهریور 1389, 14:29 عصر
اگر مراد لود کردن یک فرم از یک اسمبلی (همون exe) دات نت است باید با reflection و کلاس assembly ور بری

ostovarit
سه شنبه 23 شهریور 1389, 14:40 عصر
اگر مراد لود کردن یک فرم از یک اسمبلی (همون exe) دات نت است باید با reflection و کلاس assembly ور بری
با جوابی که دادی به مراد که نرسیدم هیچ گیجم شدم ... :چشمک:
سورس هر دو برنامه رو دارم ... با کلای assembly و reflection آشنا نیستم ...
اگر بهتر و بیشتر برام توضیح بدید و نمونه ای بزارید که ممنون میشم....
(نمونه: باز کردن یک برنامه و فرم مورد نظر توسط یک دکمه در برنامه ای دیگر و ارسال پارامتر مثلا یک string به فرم برنامه اول)

rezamansori
سه شنبه 23 شهریور 1389, 18:32 عصر
شما می تونی یه واسط بین این دوتا برنامه بذاری. مثلا یه کلید رجیستری که برنامه اول توش مقدار مورد نظر رو سیو کنه و برنامه دوم رو اجرا کنه بعد برنامه دوم بخونتش.

ostovarit
سه شنبه 23 شهریور 1389, 18:39 عصر
شما می تونی یه واسط بین این دوتا برنامه بذاری. مثلا یه کلید رجیستری که برنامه اول توش مقدار مورد نظر رو سیو کنه و برنامه دوم رو اجرا کنه بعد برنامه دوم بخونتش.

ممنون راه حل خیلی خوبیه ... یعنی هر دو نرم افزار در زمان شروع یک فایل رو چک کنن...
واقعا ممنون

بازم اگر دوستان راه حلی دارن بگن ...

AliRezaPro
سه شنبه 23 شهریور 1389, 18:41 عصر
چرا باید این 2 فایل از هم مجزا باشند؟

ostovarit
سه شنبه 23 شهریور 1389, 18:44 عصر
چرا باید این 2 فایل از هم مجزا باشند؟

اگر منظور تون فایلهای exe هست واسه اینکه دو نرم افزار مکمل هم هستند و برای دسترسی آسون دو تا exe ایجاد کردم ...

پیشنهاد شما چیه؟

مهدی فرزاد
سه شنبه 23 شهریور 1389, 19:11 عصر
سلام
شما میتونید از یک فایل Xml برای برقراری ارتباط بین دو برنامه استفاده کنید
اطلاعات برنامه اول در فایل ثبت میشه و برنامه دوم از اون استفاده میکنه

fjm11100
چهارشنبه 24 شهریور 1389, 10:55 صبح
یک بار این کلاس assembly را نگاه کن متد داره باقلوا خودش داد میزنه من برای لود کردنم. رفلکشن هم کلی مثال هست توی شبکه

BILLY_Mgs
چهارشنبه 24 شهریور 1389, 13:43 عصر
اگر این اطلاعات که برنامه اول میخواد به برانامه دوم بده فقط در لحظه اجرای برنامه دومی چک میشه از ارگ استفاده کن اگه نه از رو فایل یا ...
ارگ :



/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
if (args.Length > 0)
{

if (args[0] == "-Rename")
{ Application.Run(new RenameFormEN()); }

}

else
{


if
{
string proc = Process.GetCurrentProcess().ProcessName;
Process[] processes = Process.GetProcessesByName(proc);
if (processes.Length > 1)
{
MessageBox.Show("Application Is Already Running!");
Application.Exit();
}
else
{
Application.Run(new Form1());
}
}
}
}
}
}

Reza_Yarahmadi
چهارشنبه 24 شهریور 1389, 14:44 عصر
بستگي به شرايط شما و برنامه ها داره
اگر هر برنامه فقط يك كلاس داشته باشه (كلاس فرم) ميتونيد از Reflection استفاده كنيد ولي اگر چند كلاس داشته باشيد فكر كنم به مشكل بربخوريد (مطمئن نيستم!!) ضمن اينكه برنامه دوم در غالب فرمي از برنامه اول به وجود مياد كه اين خودش مشكلاتي داره مثلا با بسته شده برنامه اول ، فرم دوم هم بسته ميشه و ...
اگر باز بودن برنامه دوم مهم نيست و براي هر بار ميخوايد يه برنامه جديد باز كنيد همون روش فايل مشترك راه حل راحتي به حساب مياد و يا اينكه زمان باز كردن برنامه دوم اطلاعات رو بصورت آرگومان بفرستيد. نمونه برنامه رو نگاه كنيد.(فايل اجرايي هر 2 برنامه رو كنار هم بذاريد)
ولي اگر ميخوايد وقتي برنامه دوم باز است به همون برنامه اطلاعات ارسال بشه قضيه يه كم سختتر ميشه.