كيف استطيع ان الغى عمل زرائر الكيبورد ؟
وليس الزرائر العادية بل اقصد :
Start menu
Context menu
Alt + Tab
Alt + Ctrl + Del
Alt + Esc
Ctrl + Esc
........ وهكذاَ
وجزاكم الله خيراً
كيف استطيع ان الغى عمل زرائر الكيبورد ؟
وليس الزرائر العادية بل اقصد :
Start menu
Context menu
Alt + Tab
Alt + Ctrl + Del
Alt + Esc
Ctrl + Esc
........ وهكذاَ
وجزاكم الله خيراً
السلام عليكم
هناك طرق كثير جدا لعمل ذلك.. ولن اسردها كلها هنا لكنى سأضع افضلهم على الأطلاق
وهو يعمل Low Level API Hook اى انه ليس كباقى الطرق التى تنتظر لحدوث الحدث (حدث الضغط على المفتاح يعنى) ثم اقوم بعمليه تضليل النظام او اخفاء رد فعل النظام للحدث او او او . . .
لكن الكود التالى سيعمل على فلتره ضربات المفاتيح قبل ان تصل للنظام اصلا , وبالتالى يمنع المفاتيح غير المرغوب فيها بعدم ارسالها للنظام.. ارجو ان تكون فكره سهله وواضحه وحتما مفيده جدااااااااا
ضع الكود التالى فى موديول:
Option Explicit Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (Destination As Any, Source As Any, ByVal Length As Long) Public Declare Function GetKeyState Lib "user32" _ (ByVal nVirtKey As Long) As Integer Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _ (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long Public Declare Function CallNextHookEx Lib "user32" _ (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Function UnhookWindowsHookEx Lib "user32" _ (ByVal hHook As Long) As Long Public Const HC_ACTION = 0 Public Const WM_KEYDOWN = &H100 Public Const WM_KEYUP = &H101 Public Const WM_SYSKEYDOWN = &H104 Public Const WM_SYSKEYUP = &H105 Public Const VK_TAB = &H9 Public Const VK_CONTROL = &H11 Public Const VK_ESCAPE = &H1B Public Const WH_KEYBOARD_LL = 13 Public Const LLKHF_ALTDOWN = &H20 Public Type KBDLLHOOKSTRUCT vkCode As Long scanCode As Long flags As Long time As Long dwExtraInfo As Long End Type Dim p As KBDLLHOOKSTRUCT Dim hhkLowLevelKybd As Long Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim fEatKeystroke As Boolean If (nCode = HC_ACTION) Then If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then CopyMemory p, ByVal lParam, Len(p) fEatKeystroke = _ ((p.vkCode = VK_TAB) And ((p.flags And LLKHF_ALTDOWN) <> 0)) Or _ ((p.vkCode = VK_ESCAPE) And ((p.flags And LLKHF_ALTDOWN) <> 0)) Or _ ((p.vkCode = VK_ESCAPE) And ((GetKeyState(VK_CONTROL) And &H8000) <> 0)) End If End If If fEatKeystroke Then LowLevelKeyboardProc = -1 Else LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam) End If End Function
ثم فى حدث الفورم لوود او اى حدث تريد ضع الكود التالى لإلغاء عمل Alt+tab+esc+win الخ
hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
ولا تنسى وضع هذا الكود فى حدث Form_unload مثلا لأنهاء عمليه الهوك على النظام
If hhkLowLevelKybd <> 0 Then UnhookWindowsHookEx hhkLowLevelKybd
كما ترى يمكن فعل العديد من التعديلات للكود ليفعل اشياء اضافيه ولكن ارجو ان تستفيد منه فى صالح العلم وافادة المسلمين وليس العكس .
لآ إله إلا الله محمد رسول الله
اخى الكريم
شكرا لسرعة الرد على مشكلتى وجزاك الله خيرا على هذا الحل
ولقد جربت الكود وفعلا منع حدوث Alt+Tab و Alt+Esc
ولكن ما هى المتغيرات التى يجب تعديلها او اضافتها لكى امنع الباقى مثل :
Alt + Ctrl + Del
Start menu
Context menu
Ctrl + Esc
واعلم انه فى الخير وإن شاء الله يكون فى عون المسلمين
اخى الكريم Siner
ارجو منك توضيح الكود ولك منى اعظم تحية
شكرا
السلام عليكم
عفوا يجب عليك ان تتعلم علم البرمجه لا أن تأخد اكواد البرمجه..
حتى ولو كنت لاتعرف شيئا فى اى شئ فى البرمجة يجب ان تتعلم من اين وكيف والى اين يذهب بك الكود..
لآ إله إلا الله محمد رسول الله
هذا الموضوع مغلق.