PDA

View Full Version : سوال: تشخيص اينكه كدام فرم اجرا شد



Morteza Manafpour
دوشنبه 27 آبان 1387, 20:10 عصر
من از داخل برنامه اي كه نوشتم يك فايل اجرايي را كه يك فايل مجزا است اجرا مي‌كنم
اين فايل اجرايي دو فرم دارد كه به صورت Random يكي از دو فرم اجرا مي‌شود
من مي‌خواهم برنامه من تشخيص دهد كه فرم اول آن فايل اجرايي باز شده يا فرم دوم آن؟

در VB6 فكر كنم يه تابع Api وجود داشت كه شناسه مخصوص هر فرم رو برمي‌گردوند ولي در دات‌نت نمي‌دونم چجوري اين كار رو انجام بدم.
داخل MSDN تونستم يه سري توضيحات راجع به نحوه اجراي Process و نحوه بستن Process مطالبي پيدا كنم ولي در مورد كنترل Process اطلاعات چنداني گيرم نيومد.
با تشكر

sepehr.net
دوشنبه 27 آبان 1387, 20:21 عصر
سلام
شما در دات نت هم میتونین از همون api ها استفاده کنین. فرقی با vb 6 نداره

Morteza Manafpour
سه شنبه 28 آبان 1387, 14:29 عصر
من به احتمال گفتم نه دقيقا اگه دوستان روشي براي اين كار ميدونن راهنمايي كنن

bah_jaf
سه شنبه 28 آبان 1387, 15:30 عصر
دوست عزیز برای این کار میتونی یه متغیر بگیری در یک فایل ماژول و از نوع Public بعد هر فرم که اجرا شد نامش رو در اون متغیر بریزی بعد با خوندن اون متغیر میفهمی کدوم اجرا شده و دیگه نیازی به بار کردن فایل Dll نداری.

mostafaaa
سه شنبه 28 آبان 1387, 17:58 عصر
سلام دوست من
معمولا و بطور پیش فرض هر فرمی که توسط یه برنامه باز میشه یه پروسه ای هم باهاش ایجاد میشه. شما میتونی توی پروسه ها جستجو کنی و اگه اسم پروسه مربوط به فرم 1 بود که میدونی فرم 1 باز شده اگه نه فرم 2
مثلا اینجوری

For Each P As Process In Process.GetProcesses
If P.ProcessName.Contains("WindowsApplication1") Then
If P.MainWindowTitle = "Form1" Then
'Your code here
ElseIf P.MainWindowTitle = "Form2" Then
'Your code here
End If
End If
Next
البته این راه حلی که به نظر من رسیده که صد البته ممکنه راه های بهتری از این هم باشه.