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

شرح لحرامي (لص) النوافذ.

مغلق
بدأه عبد القادر حجار في 1 فبراير 2003 · 13 رد · 6,876 مشاهدة · في قسم الدروس والمواضيع الهامة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اشتغلت من أكثر من سنتين على برنامج الـ 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

#2

الله يعطيك العافيه

بصراحة اول مرة اسمع بهذه الطربقه(f)

#3

شكرا لك على هذا المثال

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

وشكرا لك(gift)

#4

هلا أخ منصور و أخ Raid .

بإمكانك إخفاء القوائم كلياً (عبر تدميرها) أو بإمكانك تحسس ضربات الكيبورد و نقرات الماوس لاستدعاء عملية إعادة الأستيلاء بس بما أنو عندنا المقبض فما راح نحتاج إلا لتغيير خصائص النافذة و إرجاعها إلينا.

استخدم الـ GetParent للتأكد من أن "أبو" الآلة الحاسبة هو نموذجك (فورمك).

#5

ياريت يا اخي الكريم انت تضع مثال توضيحي لذلك

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

وادعوا لكم فى هذه الايام الفاضله

#6

بارك الله فيك يا اخ عبد القادر على هذه المعلومة الهامة الممتازة ;)

#7

يا اخ عبد قادر ارجاء التوضيح المشكله بمثال

وشكرا

#8

جيد ونشكرك علي أفكاركم

#9

اخوي ممكن تعطيني الملفات كاملة ؟؟؟ وليس فقط الكود

#10

:o مجهود رائع بحق

هل ممكن نعرف مقبض النافذة النشطة؟؟

إِنَّ الْمُتَّقِينَ فِي جَنَّاتٍ وَنَهَرٍ (54) فِي مَقْعَدِ صِدْقٍ عِندَ مَلِيكٍ مُّقْتَدِرٍ (55 )سورة القمر

#12

بسم الله الرحمن الرحيم

بصرحة أخي الكريم فكرة جديدة وغريبة وتشكر عليها

سبحان الله والحمد لله ولا اله الا الله و الله اكبر

اللهم صلي وسلم وبارك على سيدنا محمد وعلى اله وصحبه وسلم

#13

merseeeeeeeeeeeeeeeeeee

#14

يعطيك العافية أخي

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

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