PDA

View Full Version : سوال: بدست آوردن هندل برنامه مورد نظر با استفاده از pid



Saman_12
چهارشنبه 30 تیر 1389, 19:44 عصر
سلام.
من pid یک پروسس رو با استفاده از دستور :

Process.GetProcessesByName("process name").First.Id
بدست می آورم حلا می خوام با استفاده از pid موجود هندل برنامه را بدست آورم! :متفکر:

حالا اگه شما دوستان عزیز لطف کنید کدی چیزی در این را بطه بدین ممنون میشم:خجالت:

Saman_12
پنج شنبه 31 تیر 1389, 12:56 عصر
از این همه کمک شما دوستان بسیار ممنونم , فقط یه وقت خسته نشید.:لبخند:
از موضوع خستگی که بگذریم میرسیم به بحث شیرین برنامه نویسی!
من تویه یه تایپک مربوط به دلفی به یک همچین سوالی بر خوردم , توی یکی از پاسخ ها آقای کشاورز(مدیریت سایت) گفتبودن که :

نمیدونم آیا API مستقیمی برای این کار هست یا نه، ولی می تونید با استفاده از EnumWindows لیست پنجره های باز را بدست بیارید، و با استفاده از GetWindowThreadProcessId هم Process ID مربوط به هر پنجره را بدست بیارید، و با مقایسه آن با Process ID مورد نظرتان، متوجه بشید که آیا پنجره مربوط به اون Process هست یا نه.

خوب من از این دوتا API هیچی نمی دونم فقط اسماشونو شنیدم اگه لطف کنید در باره این دو تا API و این کاری که آقای کشاورز گفتن یه توضیح بدین کارم راه میفته!:خجالت:
با تشکر از دوستان! :تشویق:(البته ما که فعلان دوستی در این انجمن نداریم اما کم کم پیدا می کنیم.):تشویق:

محسن شامحمدی
پنج شنبه 31 تیر 1389, 19:33 عصر
سلام.
من pid یک پروسس رو با استفاده از دستور :

Process.GetProcessesByName("process name").First.Idبدست می آورم حلا می خوام با استفاده از pid موجود هندل برنامه را بدست آورم! :متفکر:

حالا اگه شما دوستان عزیز لطف کنید کدی چیزی در این را بطه بدین ممنون میشم:خجالت:
فقط کافیه کدتون رو به صورت زیر تغییر بدید
Process.GetProcessesByName("process name").First.handle
شما فقط به جای id اون پروسس هندل اون رو می گیری تازه چیزای دیگه هم داره.
دیگه دوران طلائی توابع Api گذشته.:قهقهه:

Saman_12
پنج شنبه 31 تیر 1389, 19:47 عصر
دوست عزیز اینو خودم میدونم!:لبخند:
هندل یک شئ تا وقتی که بسته نشه یک شماره بیشتر نیست مثل (26487) و تا بستن برنامه و باز کردن مجدد اون تغیر نمی کنه ولی وقتی من خروجی این کد رو به صورت (msgbox) دریافت می کنم در هر 2 ثانیه تغییر میکنه و یه عدد دیگه رو نشون میده!:متفکر:
پس نتیجه می گیریم کاری که آقای کشاورز گفتن بهتره!
از پاسخ شما بسیار متشکرم:لبخندساده:

Saman_12
پنج شنبه 31 تیر 1389, 20:11 عصر
دوستان عزیز بس که شما زحمت می کشین واقعا شرمنده ام , حداقل یک بلد نیستیم , نمیشه ای می نوشتید(البته بجز کاربر :تشویق:09111111111 :تشویق:)
بله حق با کار بر گرامی 09111111111 است چیزای دیگه داره همین الان یکیو امتحان کردم دیدم هندل برنامه رو میده :

Process.GetProcessesByName("process name").First.MainWindowHandle
و این یکی هم برای تبدیل pid به هندل :

Process.GetProcessById("Process pid").MainWindowHandle
من که جوابمو خودم (با استفاده از کمک 09111111111) پیدا کردم حداقل کاربران دیگه می تونن استفاده کنن!:لبخندساده: