PDA

View Full Version : سوال: ارسال متن به یه process دیگه



maminb
جمعه 16 مرداد 1388, 15:53 عصر
سلام عزیزان. میخواستم بدونم باید چیکار کنم تا بتونم به یه پروسس دیگه پیام بفرستم. یعنی من یه متن رو بفرستم برای یه پروسس دیگه و اون هم اونو دریافت کنه و کار های لازم رو با اون متن انجام بده. لازمه بگم که هر دو پروسس با زبان Vb.net و توسط من نوشته شده اند..





ممنون میمش کمکم کنید.

maminb
یک شنبه 18 مرداد 1388, 13:09 عصر
خواهشا کمکم کنید!!!!

bastakboys
یک شنبه 18 مرداد 1388, 20:04 عصر
این پست بهت کمک می کنه
http://barnamenevis.org/forum/showthread.php?t=168646

maminb
یک شنبه 18 مرداد 1388, 21:42 عصر
من متوجه نشدم. ببینید، من میخوام یه تکست (مثلا amin) رو به یه برنامه که باز هست و توسط خودم نوشته شده بفرستم.

bastakboys
دوشنبه 19 مرداد 1388, 05:24 صبح
من متوجه نشدم. ببینید، من میخوام یه تکست (مثلا amin) رو به یه برنامه که باز هست و توسط خودم نوشته شده بفرستم.


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



System.Diagnostics.Process.Start("sample.exe", "برنامه نویس")

که sample.exe نام برنامه دوممون است
و "برنامه نویس" هم آرگومانی که به برنامه دوم ارسال شد

خوب در برنامه دوم هم کد زیر رو بنویس
رویداد لود فرم



Dim parameters As String = Environment.GetCommandLineArgs(1)
Me.Text = parameters

که این کار عنوان فرمتون را به برنامه نویس تغییر می ده

و ما این عنوان را از برنامه اول به برنامه دوم ارسال کردیم

BehzadBar
دوشنبه 19 مرداد 1388, 16:49 عصر
سلام دوست عزیز
روش این کار را .Net خیلی ساده کرده
شما باید از ساختار SOA استفاده کنید
این ساختار در
System.Runtime.Serialization پیاده سازی شده
روش کار به این صورت هست که ابتدا باید متن یا هر آبجکتی را که میخواهیداز هر طریقی به یک کلاینت دیگر بفرستیدرا Serialize کنید
بعد هم لازم نیست هر چندوقت یکبار چک کنید که آیا پیام یا فایلی رسیده یا نه
شما میتوانید با استفاده از کلاس
FileSystemWatcher
به محض رسیدن فایل جدیدکه به صورت تغییراتی در IO میباشد الارم بگیرید
و در نهایت در کلاینت گیرنده فایل دریافتی را Deserialize کنید
برای اطالاعات بیشتر میتوانید دنبال Serialization در وب بگردید
امیدوارم کمکی کرده باشم

maminb
سه شنبه 20 مرداد 1388, 15:02 عصر
ببین در برنامه اولت میتونی با کد زیر برنامه دوم روباز کنی و یک آرگومان به اون بفزستی



System.Diagnostics.Process.Start("sample.exe", "برنامه نویس")
که sample.exe نام برنامه دوممون است
و "برنامه نویس" هم آرگومانی که به برنامه دوم ارسال شد

خوب در برنامه دوم هم کد زیر رو بنویس
رویداد لود فرم



Dim parameters As String = Environment.GetCommandLineArgs(1)
Me.Text = parameters
که این کار عنوان فرمتون را به برنامه نویس تغییر می ده

و ما این عنوان را از برنامه اول به برنامه دوم ارسال کردیم


ممنون از جواب عزیزان.

اگه اینکارو بکنم، وقتی برنامه بدون پارامتر اجرا بشه، ارور میده. چیکار کنم که اگه برنامه بدون پارامتر اجرا شد، یه msgbox بده و بسته شه؟

bastakboys
سه شنبه 20 مرداد 1388, 16:43 عصر
ممنون از جواب عزیزان.

اگه اینکارو بکنم، وقتی برنامه بدون پارامتر اجرا بشه، ارور میده. چیکار کنم که اگه برنامه بدون پارامتر اجرا شد، یه msgbox بده و بسته شه؟
دوست عزیز اگه اون لینکی رو که چند پست قبل برات گذاشتم نگاه می کردی یک راه حل داره


If Environment.GetCommandLineArgs(0).ToString = "F:\work\Projects88\sample\sample\bin\Debug\sample. vshost.exe" Then
Exit Sub
End If
Dim parameters As String = Environment.GetCommandLineArgs(1)
Me.Text = parameters

bastakboys
سه شنبه 20 مرداد 1388, 16:46 عصر
سلام دوست عزیز
روش این کار را .Net خیلی ساده کرده
شما باید از ساختار SOA استفاده کنید
این ساختار در
System.Runtime.Serialization پیاده سازی شده
روش کار به این صورت هست که ابتدا باید متن یا هر آبجکتی را که میخواهیداز هر طریقی به یک کلاینت دیگر بفرستیدرا Serialize کنید
بعد هم لازم نیست هر چندوقت یکبار چک کنید که آیا پیام یا فایلی رسیده یا نه
شما میتوانید با استفاده از کلاس
FileSystemWatcher
به محض رسیدن فایل جدیدکه به صورت تغییراتی در IO میباشد الارم بگیرید
و در نهایت در کلاینت گیرنده فایل دریافتی را Deserialize کنید
برای اطالاعات بیشتر میتوانید دنبال Serialization در وب بگردید
امیدوارم کمکی کرده باشم

دوست عزیز من گشتم اما چیز به درد بخور پیدا نکردم اگه شما آموزش یا سورسی از این کار دارید بگذارید.

maminb
چهارشنبه 21 مرداد 1388, 09:22 صبح
دوست عزیز اگه اون لینکی رو که چند پست قبل برات گذاشتم نگاه می کردی یک راه حل داره


If Environment.GetCommandLineArgs(0).ToString = "F:\work\Projects88\sample\sample\bin\Debug\sample. vshost.exe" Then
Exit Sub
End If
Dim parameters As String = Environment.GetCommandLineArgs(1)
Me.Text = parameters


دیدم ولی چیزی نفهمیدم. میشه همینجا کدیو بذارید که اگه برنامه بدون آرگومنت اجرا شد، به جای ارور دادن، اول یه msgbox بده بعد خودش بسته شه؟!

arsalansalar
چهارشنبه 21 مرداد 1388, 09:37 صبح
دیدم ولی چیزی نفهمیدم. میشه همینجا کدیو بذارید که اگه برنامه بدون آرگومنت اجرا شد، به جای ارور دادن، اول یه msgbox بده بعد خودش بسته شه؟!
دوست عزیز جای این خط "Exit Sub" یک msgbox بذار.

maminb
چهارشنبه 21 مرداد 1388, 11:07 صبح
ممنون. فعلا مشکلم حل شد. اگه بازم مشکلی داشتم مطرح میکنم.

esamath
چهارشنبه 21 مرداد 1388, 13:00 عصر
چه جوری یه تاپ:متفکر:یک جدید ایجاد کنم؟

BehzadBar
شنبه 24 مرداد 1388, 16:21 عصر
دوست عزیز در لینک زیر همه چیز درباره Serialization نوشته شده

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.aspx