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

كيفية إلغاء زرائر لوحة المفاتيح

مغلق
بدأه روح الفنان في 2 سبتمبر 2005 · 4 رد · 627 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف استطيع ان الغى عمل زرائر الكيبورد ؟

وليس الزرائر العادية بل اقصد :

Start menu

Context menu

Alt + Tab

Alt + Ctrl + Del

Alt + Esc

Ctrl + Esc

........ وهكذاَ

وجزاكم الله خيراً

#2

السلام عليكم

هناك طرق كثير جدا لعمل ذلك.. ولن اسردها كلها هنا لكنى سأضع افضلهم على الأطلاق

وهو يعمل 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

كما ترى يمكن فعل العديد من التعديلات للكود ليفعل اشياء اضافيه ولكن ارجو ان تستفيد منه فى صالح العلم وافادة المسلمين وليس العكس .

لآ إله إلا الله محمد رسول الله

#3

اخى الكريم

شكرا لسرعة الرد على مشكلتى وجزاك الله خيرا على هذا الحل

ولقد جربت الكود وفعلا منع حدوث Alt+Tab و Alt+Esc

ولكن ما هى المتغيرات التى يجب تعديلها او اضافتها لكى امنع الباقى مثل :

Alt + Ctrl + Del

Start menu

Context menu

Ctrl + Esc

واعلم انه فى الخير وإن شاء الله يكون فى عون المسلمين

#4

اخى الكريم Siner

ارجو منك توضيح الكود ولك منى اعظم تحية

شكرا

#5

السلام عليكم

عفوا يجب عليك ان تتعلم علم البرمجه لا أن تأخد اكواد البرمجه..

حتى ولو كنت لاتعرف شيئا فى اى شئ فى البرمجة يجب ان تتعلم من اين وكيف والى اين يذهب بك الكود..

لآ إله إلا الله محمد رسول الله

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

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