الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف أميز بين نافذتن مفتوحتين (لايخصان برنامجي)؟

بدأه مخالف_58 في 2 مايو 2008 · 14 رد · 1,517 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سؤالي:هل من الممكن أن أميز بين نافذتين مفتوحتين (لايخصان برنامجي)؟

بمعنى أخر إذا كان لدي نافذة A وأخرى B فهل من طريقة (ثابتة) تمكنني من معرفة

أيهما A وأيهما B بدون Handle لأني لاحظت أن Handle الخاص بنافذة ما

يتغير كلما فتحت النافذة مرة جديدة , أنا أحتاج إلى طريقة ثابتة للتمييز بين النافذتين

أرجو أن تكو الصورة أصبحت واضحة كفاية.

أرجو الرد مع شكري الجزيل للجميع.

#2

تم الرد مع المثاال على الرسايل الخاصة

#3
اقتباس
لاحظت أن Handle الخاص بنافذة ما

يتغير كلما فتحت النافذة مرة جديدة

خطأ يا أخي , المقبض HWND ثابت لكل نافذة/برنامج لا يتغير إلا بتغيير الكود.

و يمكنك التحكم بعد معرفة المقبض (يمكنك معرفته بإستخدام API Spy كـspy++ أو PAT or JK's API SPY) بدوال الـWinAPI مثل FindWindow و SendMessage

ويا أخي thegem رد هنا كي يستفيد من عنده نفس السؤال :)

تم تعديل هذه المشاركة بواسطة croconile في 4 مايو 2008 في 05:40

rasool4k.gif

[وسط]mimetex.cgi?MSN:root@root-shell.net.

[/وسط]

#4

يا أخ croconile ممكن توضح أكتر

ليش كلما بفتح نفس النافذة أجد رقم Handle يتغير

؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

#5
اقتباس
خطأ يا أخي , المقبض HWND ثابت لكل نافذة/برنامج لا يتغير إلا بتغيير الكود.

غير صحيح !!

مقبض النافذة يتغير ..

100%مقهور :

يجب أن يكون لديك معلومات عن النافذتين أو البرنامجين المستهدفين.. من هذه المعلومات الإسم , الـ class, موقع النافذة (الإحداثيات , مثلا حيث موقع الماوس ), الـ process id , process name... (أحياناً ستحتاج لمعلومة واحدة فقط وأحياناً لأكثر من معلومة ) ..

ستحتاج لإستخدام الدالة FindWindow وقد تحتاج لدوال أخرى حسب المعلومات التي لديك ..

في MSDN راجع الدوال Window Functions

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#6

لا إله إلا الله

مقبض البرنامج الواحد لا يتغير من مرة لآخرى

rasool4k.gif

[وسط]mimetex.cgi?MSN:root@root-shell.net.

[/وسط]

#7

باختصار شديد

لكي نافذة مفتوحة رقم وحيد يخصها يعرف بالمقبض

طبعا اذا اغلقت النافذة ثم فتحت من جديد يتم اختيار رقم آخر (ليس بالضرورة نفس الرقم القديم) لتعريف النافذة أو البرنامج المفتوح

يعني لو أردت أن تبحث عن نافذة ببساطة يجب أن تكون مفتوحة

اذا رقمها (مقبضها) سيكون ثابتا ووحيد

#8

DreamNet :

كلامك صحيح وهذا معروف للجميع ولنكن أكثر دقة فالتغيير يتم بعد إستدعاء Destroyer funtion ..

لكن الأخ croconile يصر على الخطأ ولا أعلم لماذا؟!!!

لا يمكن أن يكون مقبض أي نافذة ثابتاً كل مرة لان ذلك شئ غير منطقي ...

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#9

:angry2: :angry: :mad: :angry: :tantrum: :wacko: :angry:

إسم الـHWND ثابت

وإسم الكلاس Class ثابت

هل تقصدوا الـPID

rasool4k.gif

[وسط]mimetex.cgi?MSN:root@root-shell.net.

[/وسط]

#10

:lol:

شايف الحالة لازمها تطبيق عملي أحسن

والأخ croconile ملزم باعطائنا النتائج

1-افتح مشروع جديد على الفيبي واكتب في كود زر أمر

MsgBox Me.hWnd

2-نفذ المثال وسجل رقم المقبض بعد التشغيل

3-أغلق النافذة وأعد العملية

4-قارن بين الرقمين

5-أخبرنا بالنتيجة النهائية

:D

#11
croconile كتب:
إسم الـHWND ثابت

وإسم الكلاس Class ثابت

ال HWND ليس له اسم انما هو قيمة DWORD

وهو لا يتغير اذا كان البرنامج يعمل يعني مثلا اذا فتحت برنامج ثم تركته خمس دقائق او ساعة يعمل لن يتغير الHWND الخاص بالنوافذ

لكن اذا قمت باغلاقه واعادة فتحه ليس بالضرورة ان تكونة قيم ال HWND كما كانت حينما كان يعمل بالسابق

انظر هذه الصور المأخوذة من برنامج En4bler والذي يعرض ال HWND الخاص بالنافذة الذي يؤشر عليها الماوس ويعرض ال Parent HWND الخاص بها وايضا نوع ال Class

لاحظ تغير ال HWND

post-77919-1210518361_thumb.jpg

post-77919-1210518466_thumb.jpg

#12
DreamNet كتب:
:lol:

شايف الحالة لازمها تطبيق عملي أحسن

والأخ croconile ملزم باعطائنا النتائج

1-افتح مشروع جديد على الفيبي واكتب في كود زر أمر

MsgBox Me.hWnd

2-نفذ المثال وسجل رقم المقبض بعد التشغيل

3-أغلق النافذة وأعد العملية

4-قارن بين الرقمين

5-أخبرنا بالنتيجة النهائية

:D

الإعتراف بالحق فضيلة :D

48024878vm3.png

89268789bo9.png

لكن لم أقصد هذا.

جرب حضرتك هذا الكود

Dim wndclassdeskedgsk As Long
  wndclassdeskedgsk = FindWindow("wndclass_desked_gsk", vbNullString)
  Call EnableWindow(wndclassdeskedgsk, 0)

كلما يا أخي فعلت هذا ستجد النافذة معك تم قنصها :)

هذا ما قصدت لكن خانني التعبير

جزاكم الله خيرا :wub:

</div>

تم تعديل هذه المشاركة بواسطة croconile في 14 مايو 2008 في 11:28

rasool4k.gif

[وسط]mimetex.cgi?MSN:root@root-shell.net.

[/وسط]

#13

يعني كان لازم شرح مفصل حتى تقتنع؟!

اقتباس
كلما يا أخي فعلت هذا ستجد النافذة معك تم قنصها

أكيد , لأن القيمة الجديدة لمقبض النافذة ستستند للمتغير wndclassdeskedgsk .

تغير قيمة مقبض النافذة بعد إغلاقها هذا شئ منطقي , فكر في الأمر قليلاً وستدرك ذلك .

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#14

والنتيجة يا جماعة مالطريقة في التفريق بين النافذتين علماً أنهما كل مرة تغلق إحداهما وتظهر الأخرى فكيف أعرف أن التي ظهرت هي

النافذة A

مثلاً وليست الأخرى؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

تم تعديل هذه المشاركة بواسطة 100%مقهور في 17 مايو 2008 في 21:20

#15

الاشياء الثابتة هى الكلاس class وال name اذا لم يكن يتغير من خلال البرنامج

فاذا كان معك الكلاس لتلك النافزة يمكنك قنصها والاتيان بالمقبض الخاص بها كلما اشتغلت

/index.ph...ciation+Example

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…