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