عمل Hook للنوافذ لمراقبة بعض رسائل النظام للنوافذة

الناقل : elmasry | الكاتب الأصلى : MSVS | المصدر : www.arabteam2000-forum.com

السلام عليكم

هذا برنامج لمراقبة (بعض) رسائل النظام المرسلة لنوافذ البرامج .، طبعاً بواسطة دوال API


الدوال الرئيسية في هذا البرنامج :


Private Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" _
                         (ByVal lpString As String) As Long


هذه الدالة لتحويل قيمة نصية لرسالة من نوع Long ليتعامل معها النظام .




Private Declare Function RegisterShellHook Lib "Shell32" Alias "#181" _
                         (ByVal hWnd As Long, _
                          ByVal nAction As Long) As Long

هذه الدالة لإنشاء Hook على النافذة
الوسيط الأول مقبض النافذة التي ستستقبل الرسائل
الوسيط الثاني نوع الـ Hook :
RSH_REGISTER = 1
RSH_REGISTER_PROGMAN = 2
RSH_REGISTER_TASKMAN = 3




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

هذه الدالة لتثبيت الخطاف (Hook) على النافذة



Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
                         (ByVal hWnd As Long, _
                          ByVal nIndex As Long) As Long

هذه الدالة نستخدمها لمعرفة عنوان الإجراء الحالي للنافذة ، سنستخدمه عند إعادة الرسائل إلى النافذة الأصلية .




Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
                         (ByVal hWnd As Long, _
                          ByVal lpString As String, _
                          ByVal cch As Long) As Long

هذه الدالة تعطينا عنوان النافذة



Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" _
                         (ByVal hWnd As Long) As Long

هذه الدالة تعطينا طول عنوان النافذة (القيمة العائدة من هذه النافذة تستخدم كوسيط ثالث مع الدالة GetWindowText )




Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
                         (ByVal lpPrevWndFunc As Long, _
                          ByVal hWnd As Long, _
                          ByVal Msg As Long, _
                          ByVal wParam As Long, _
                          ByVal lParam As Long) As Long


هذه الدالة الأم التي ستستقبل جميع الرسائل من النظام .

إذا كانت قيمة الوسيط الثاني ( Msg ) = قيمة الرسالة العائدة من الدالة RegisterWindowMessage فإن هذه الرسالة تخص الـ HOOK



اترككم مع المرفق :)


نسيت هذا الخطاف لا يراقب غير 8 رسائل ، ستعرفها عند الاطلاع على المرفق
 
ملف مرفق(ملفات)
 
ملف مرفق  Hook ALL Windows.rar (6.54كيلو )