المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: شرح لحرامي (لص) النوافذ.
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي لغة Microsoft Visual Basic 6 وما قبلها من إصدارات > قسم الدروس والمواضيع الهامة
عبد القادر حجار
اشتغلت من أكثر من سنتين على برنامج الـ Multimedia Builder ووجدت أن به عنصر و هو دمج نافذة تطبيق لتعمل على نافذة المشروع الذي أصممه بس ما عرفت كيف عملوها, إلى كم يوم لاحظت إنها سهلة جداً.

كيف؟ اجعل النافذة المطلوبة ابن لإحدى نوافذك عبر دالة الـ SetParent بكل بساطة.
مثال: في هذا المثال سنقوم بسرقة نافذة الآلة الحاسبة و جعلها ابناً لنافذتنا و كأنها أداة داخل النافذة.
كود
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Private Declare Function MoveWindow Lib "user32" Alias "MoveWindow" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

Private Declare Function GetForegroundWindow Lib "user32" () As Long



Private Const GWL_STYLE = (-16)

Private Const WS_CLIPSIBLINGS = &H4000000

Private Const WS_VISIBLE = &H10000000



Private Sub Form_Load()

Dim Handle As Long, Ret As Long

    'شغلنا البرنامج

Shell "calc", vbHide + vbMinimizedNoFocus

    'نبحث عن مقبض نافذة البرنامج

Handle = FindWindow(vbNullString, "Calculator")

    'إن لم تعمل معك الوظيفة السابقة فاحذف السطر السابق و فعل السطر التالي

    'سنحصل على مقبض النافذة العليا

    'Handle = GetForegroundWindow

    '-

    'نغير شكل النافذة لنزيل الشريط العلوي أي عنوان النافذة و أزرار التحكم

    'لا حظ أننا نغير شكل النافذة العادي و ليس المطوّر الـ Extended

Ret = SetWindowLong(Handle, GWL_STYLE, WS_VISIBLE Or WS_CLIPSIBLINGS)

    'ننقل النافذة إلى نافذة البرنامج بأن نجعلها ابناً لنافذتنا

SetParent Handle, Me.hWnd



End Sub

ملاحظة: عندي الوندوز بالأنكليزي Enabled لذلك عنوان نافذة الآلة الحاسبة هو Calculator لذلك غير السطر الثاني من البرنامج الذي يتم البحث عبره عن نافذة الآلة الحاسبة إلى عنوان نافذة الألة الحاسبة على نظامك.

لتحريك النافذة الابن التي تم الاستيلاء عليها استخدم دالة الـ MoveWindow .
مثال: MoveWindow Handle, 0, 0, Me.Width, Me.Height, 1
منصور
الله يعطيك العافيه
بصراحة اول مرة اسمع بهذه الطربقه(f)
raid
شكرا لك على هذا المثال

لكن لو غيرنا نوع الحاسبه من عاديه الى علميه ترجع المشكله ياريت توضح كيف

وشكرا لك(gift)
عبد القادر حجار
هلا أخ منصور و أخ Raid .
بإمكانك إخفاء القوائم كلياً (عبر تدميرها) أو بإمكانك تحسس ضربات الكيبورد و نقرات الماوس لاستدعاء عملية إعادة الأستيلاء بس بما أنو عندنا المقبض فما راح نحتاج إلا لتغيير خصائص النافذة و إرجاعها إلينا.
استخدم الـ GetParent للتأكد من أن "أبو" الآلة الحاسبة هو نموذجك (فورمك).
raid
ياريت يا اخي الكريم انت تضع مثال توضيحي لذلك

واشكرك على التواصل معنا

وادعوا لكم فى هذه الايام الفاضله
Alhassan
بارك الله فيك يا اخ عبد القادر على هذه المعلومة الهامة الممتازة wink_smile.gif
raid
يا اخ عبد قادر ارجاء التوضيح المشكله بمثال

وشكرا
genedy
جيد ونشكرك علي أفكاركم
عابر_سبيل
اخوي ممكن تعطيني الملفات كاملة ؟؟؟ وليس فقط الكود
mesahrate
omg_smile.gif مجهود رائع بحق
هل ممكن نعرف مقبض النافذة النشطة؟؟


إِنَّ الْمُتَّقِينَ فِي جَنَّاتٍ وَنَهَرٍ (54) فِي مَقْعَدِ صِدْقٍ عِندَ مَلِيكٍ مُّقْتَدِرٍ (55 )سورة القمر
المزمجر
موضوع له صلة
أتمنى مزيد من الافكار في الموضوع
كيف يمكن أخذ أداة ما من برنامج تنفيذي إلى برنامجي,
عدنان عيسى
بسم الله الرحمن الرحيم

بصرحة أخي الكريم فكرة جديدة وغريبة وتشكر عليها
MR.AFROTO
merseeeeeeeeeeeeeeeeeee
العاقب
يعطيك العافية أخي
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.