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

كيف ألتقط الطبقة النشطة في برنامج آخر

مغلق
بدأه عفريت في 15 فبراير 2002 · 4 رد · 1,045 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

حاولت ولكن من غير جدوى .

حاولت ان التقط الـ Handle لـ الطبقة النشطة ولكن لم أنجح إلا في التقاطها اذا كانت في برنامجي أنا وأنا لست بحاجة للطبقة اذا كانت في برنامجي .

حاولت ان ألتقطها عن طريق الـ API عن طريق الإجراء GetFocus ولكن يعود لي بالـ Handle عندما يكون التركيز على الطبقات التي على برنامجي فقط ، وعندما يكون التركيز على طبقة خارج برنامجي فإنه يعود بصفر .

هل من أحد يعلم لماذا يتعامل معي الـ API كالأغبياء فأنا لا أحتاج لهذه الضجة عندما تكون الطبقة النشطة داخل برنامجي .

إذا كان احدكم يعرف ماهو الحل لمشكلتي فلا يبخل فأنا يأست من GetFocus هل هناك غيره يوفي بما أريد .:'(

#2

لقد تطور مفهوم النافذة النشطة مع الانتقال إلى انظمة win32 حيث ان تعاملك مع الدالتين GetFocus و GetActiveWindow سيقتصر على تطبيقك الحالي واذا قمت باستخدامهما لغير نوافذ تطبيقك فستعيد صفر، والفكرة ليست غبية كما بدا لك ولكنها محاولة جيدة من مايكروسوفت لمنع حدوث تضاربات بين التطبيقات ... وقد قامت الشركة بايجاد مفهوم النافذة الأمامية لحل هذه المسألة .. وهذا مثال يقوم بعمل ماتريده بناء على الدالة السابقة ..

Private Declare Function GetForegroundWindow Lib "user32" _
 () As Long
Private Declare Function GetClassName Lib "user32" Alias _
 "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName _
 As String, ByVal nMaxCount As Long) As Long

Private Sub Form_Load()
 Timer1.Interval = 50
End Sub

Private Sub Timer1_Timer()
 Dim lpClassName$
 lpClassName = Space(256)
 GetClassName GetForegroundWindow, lpClassName, 256
 Label1 = lpClassName
End Sub
#3

مبروك يا استاذ ReadOnly على اللقب الجديد (عضو شرف) (f)

#4

مشكور يا أخ Read Only بس أنا أبغا اذا كنت أعرف النافذة النشطة كيف أعرف أي طبقة عليها التركيز .

مثلا اذا ضغط الواحد على Enter كيف أعرف انه على أي مربع نص في البرنامج هذا

#5

بالنسبة لاجابة سؤالك فهي على الرابط

http://www.vb4arab.com/vb/showthread.php?s...&threadid=10871

لكن لدي ملاحظة:

بالنسبة لقولك "طبقة" فأعتقد انك تقصد ترجمة Class وإذا كان هذا ماتقصده، فأعتقد ان سؤالك يحتاج لبعض التعديل لأنك تقول "كيف أعرف أي طبقة عليها التركيز" ولكن البرنامج قد يملك نافذتين لها نفس الطبقة كمربعي نص على سبيل المثال، وبالتالي كأننا نقول أن كلا مربعي النص يملكان تركيز الدخل وهذا مستحيل منطقيا ... واعتقد انك تقصد النوافذ الأبناء والتي تمثل غالبا نوافذ عناصر التحكم.

هذا الموضوع مغلق.

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