PDA

View Full Version : ارسال پارامتربه برنامه در حال اجرا



Hossenbor
سه شنبه 17 اسفند 1389, 08:04 صبح
سلام من می خواستم بدونم وقتی برنامه در حال اجراست چجوری پارامتر بهش ارسال کنم برای مثال وقتی برنامه در حال اجراست برنامه را دوباره اجرا کنم پارامترهای این برنامه را برنامه در حال اجرا منتقل کنم و استفاده دیگه اش درگ کردن فایل برای مثال تکست و نمایش ان در تکست باکس و برای اینکه ابهامی در سوالم نباشه برای مثال وقتی فایل برنامه رو اجرا می کنید ادرس فایل رو بهstring‎[‎‎]‎ args میفرسته حالا میخوام این پارامتر رو در برنامه در حال اجرا دریافت کنم

Hossenbor
سه شنبه 17 اسفند 1389, 10:21 صبح
سلام خدمت اساتید عزیز هیچکس راه حلی به ذهنش نمیرسه

Reza_Yarahmadi
سه شنبه 17 اسفند 1389, 10:48 صبح
برای بحث درگ کردن خاصیت AllowDrag رو True کنید و توی رویداد مربوط به درگ کردن (مثل DragDrop) کدهای مورد نظرتون رو بنویسید (آرگومان e حاوی اطلاعات درگ شده است).
ولی برای ارسال آرگومان به برنامه ، منم برای کاری نیاز به همچین کاری داشتم ولی راه حل درستی براش پیدا نکردم ، راه حلهای پیداشد ولی چندان به دل خودم نبود. بعد اون قضیه هم پیگیر این موضوع نشدم.
2 راه حلهای که بهتر از بقیه بودند:
استفاده از Remoting به این صورت که برنامه بعد از اجرا به یک پورت گوش میده ، در صورت باز شدن برنامه جدید ، برنامه دوم از طریق پورت مورد نظر به برنامه اصلی اطلاعات رو ارسال کنه و خودش بسته بشه. مشکلی که این روش داره اینه که یا باید فایروال رو غیرفعال کرد یا پورت مورد نظر رو به فایروال معرفی کرد. در ضمن اگر کاربر نصب کننده برنامه Admin نباشه مشکلات دسترسی داره.
راه حل دیگه استفاده از SendMessage (هوک کردن) ، به این صورت که بعد از اجرا شدن برنامه دوم ، پارامترهایی که قراره ارسال بشه در یک فایل ذخیره میکنه و با استفاده از متد SendMessage یک پیغام به برنامه اصلی ارسال میکنه. برنامه اصلی پس از دریافت Message فایل رو میخونه و اونو پاک میکنه. این روش مشکلات روش قبلی رو نداره. (منم با همین روش کارم رو راه انداختم)

Hossenbor
سه شنبه 17 اسفند 1389, 11:55 صبح
میشه قسمت اولش رو باز کنید من هر جوری ور رفتم علامت ورود ممنوع رو میزنه و نمیدونم اطلاعات رو چجوری ازش دریافت کنم

Reza_Yarahmadi
سه شنبه 17 اسفند 1389, 14:54 عصر
یه نمونه کد ساده برای تکست باکس میذارم. برای بقیه ابزارها هم همینطور میتونید عمل کنید (البته با یک مقدار دستکاری و مدیریت بهتر).
private void textBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}

private void textBox1_DragDrop(object sender, DragEventArgs e)
{
(sender as TextBox).Text += (string)e.Data.GetData(DataFormats.Text);
}

private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
(sender as TextBox).DoDragDrop((sender as TextBox).SelectedText, DragDropEffects.Copy);
}