السلام عليكم
هذا برنامج لمراقبة (بعض) رسائل النظام المرسلة لنوافذ البرامج .، طبعاً بواسطة دوال 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 رسائل ، ستعرفها عند الاطلاع على المرفق

