PDA

View Full Version : اجراي يک برنامه بصورت child برنامه اجرا کننده



DAMAVAND
سه شنبه 24 اسفند 1389, 18:26 عصر
سلام به دوستان گرامي, بعد از يک چند وقت از دوري از سايت باز هم خدمت رسيدم .

آيا امکان اين هست که يک برنامه رو با برنامه خودمون باز (Run) کنيم, منتها مالک برنامه هدف , برنامه خومون باشه ? منظورم اجراي برنامه و بعد تغيير parent اون به برنامه خومون با کمک setparent نيست . اين رو ميدونم .
هدفم اجراي برنامه از همون اول بصورت وابسته به برنامه مالک هست. يعني به محض اجرا اين اتفاق افتاده باشه نه اينکه اول اجرا کنيم و بعد مالک هندل رو تغيير بديم .

AliReza Vafakhah
سه شنبه 24 اسفند 1389, 18:49 عصر
من که خط آخر سوالتون رو درست متوجه نشدم اما خوب همین الآن که با Process Manager پروسس یکی از برنامه هام رو نگاه کردم و از داخل برنامه مربوطه یک برنامه را اجرا کردم دیدم پروسس این تریپی شد یعنی فکر کنم همون چیزی که شما مد نظرتون هست ، برنامه مربوطه برنامه ای هست که خودم نوشتم و برای اجرای برنامه در کد نویسی از ShellExecute (http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx) استفاده کردم.

Mask
چهارشنبه 25 اسفند 1389, 01:23 صبح
قانونا هر برنامه ای رو که توسط برنامه خودتون اجرا کنید همین حالت براش پیش میاد.

DAMAVAND
چهارشنبه 25 اسفند 1389, 21:54 عصر
منظورم اين هست که در واقع مالک پروسس مربوط به برنامه اجرا شده ,برنامه ما بشه ! برنامه هايي رو ديدم که مثلا يک برنامه ديگر رو اجرا ميکنند و در صورتي که برنامه اجرا کننده رو ببنديد برنامه ديگر نيز بسته خواهد شد ......

AliReza Vafakhah
چهارشنبه 25 اسفند 1389, 22:30 عصر
منظورم اين هست که در واقع مالک پروسس مربوط به برنامه اجرا شده ,برنامه ما بشه ! برنامه هايي رو ديدم که مثلا يک برنامه ديگر رو اجرا ميکنند و در صورتي که برنامه اجرا کننده رو ببنديد برنامه ديگر نيز بسته خواهد شد ......

دوست عزیز این رو دیگه باید خودتون برنامه نویسی کنید ، زیاد هم سخت نیست

vcldeveloper
پنج شنبه 26 اسفند 1389, 12:44 عصر
هدفم اجراي برنامه از همون اول بصورت وابسته به برنامه مالک هست. يعني به محض اجرا اين اتفاق افتاده باشه نه اينکه اول اجرا کنيم و بعد مالک هندل رو تغيير بديم .
نه، پروسه ها در ویندوز همچین وابستگی به هم ندارند؛ مگر اینکه کد هر دو پروژه در اختیار خودتان باشه، و خودتان برای برقراری ارتباط بین این دو پروسه کد بنویسید.


قانونا هر برنامه ای رو که توسط برنامه خودتون اجرا کنید همین حالت براش پیش میاد.
نه، هر پروسه ای که ایجاد میشه، میتونه Parent ID داشته باشه که Process ID مربوط به پروسه ایجاد کننده اون هست، اما این Parent ID تاثیری روی عملکرد پروسه نداره، و بسته شدن پروسه والد تاثیری روی پروسه فرزند نخواهد گذاشت. Parent ID فقط یک فیلد اطلاعاتی هست که بشه فهمید پروسه مربوطه توسط چه پروسه ایی ایجاد شده.

Felony
پنج شنبه 26 اسفند 1389, 16:46 عصر
نه، هر پروسه ای که ایجاد میشه، میتونه Parent ID داشته باشه که Process ID مربوط به پروسه ایجاد کننده اون هست، اما این Parent ID تاثیری روی عملکرد پروسه نداره، و بسته شدن پروسه والد تاثیری روی پروسه فرزند نخواهد گذاشت. Parent ID فقط یک فیلد اطلاعاتی هست که بشه فهمید پروسه مربوطه توسط چه پروسه ایی ایجاد شده.
و نکته دیگه اینکه یک پروسه فقط یک Parent ID که به پروسه ایجاد کنندش ( والد ) اشاره میکنه داره ، اطلاعات مربوط به والد ، والد در یک پروسه وجود نداره ، یعنی اگر پروسه 1 پروسه 2 و پروسه 2 پروسه 3 رو اجرا کنه ، Parnt ID پروسه 3 ID پروسه 2 هست و با اینکه پروسه 1 والد هر دو این پروسه ها هست فقط پروسه 2 ID اون رو به عنوان Parent ID داره .

با توضیحات بالا نتیجه گرفته میشه که Relationship در بین پروسه ها فقط در حد پدر و فرزند هست و شامل پدر بزرگ یا قبل تر از اون نمیشه و شما نمیتونید به پدربزرگ یک پروسه دسترسی داشته باشید چون اطلاعاتی از اون در دسترس نیست مگر اینکه تمام پروسه ها در حال اجرا باشند و از Parent ID هر کدوم به والد اصلی برسید .