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

Caps Lock

مغلق
بدأه samsor في 2 مايو 2006 · 4 رد · 2,068 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم...

الاحظ في عند كتابة الباسوورد في الماسنجر اذا كان ال Caps Lock شغال يعطينا تنبيه..

كيف اعرف في برنامجي اذا كان Active ولا لأ

شكرا

#2

up

#3

الحل الذي أعرفة باستخدام Windows API ولا أدري إن كان هناك حل مباشر من ضمن الفريموورك ولكن الحل سهل جدا وهو يعمل بشكل ممتاز على 2002 و 2003 و 2005 بدون أية مشاكل

يمكنك معرفة حالة أي من مفاتيح الأقفال Caps أو Num أو Scroll باستخدام الدالة GetKeyState من المكتبة user32.dll وذلك باستخدام استيرادات WIndows API كالتالي

أولا - ستحتاج لتعريف الإجراء حتى يمكننا استخدامه

    ' Windows Api Function declaration
    Private Declare Auto Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Int32) As Short

ثانيا - سنحتاج لتعريف الثوابت الخاصة بمفاتيح الأقفال التي نود التعرف عليها

    ' Key Lock Declaration
    Private Const VK_CAPITAL = &H14
    Private Const VK_NUMLOCK = &H90
    Private Const VK_SCROLL = &H91

ثالثا - يمكننا الآن الاستعلام عن حالة أي من المفاتيح كالتالي

        ' Caps Lock Status
        TextBox1.Text = GetKeyState(VK_CAPITAL).ToString
        ' Num Lock Status
        TextBox1.Text = GetKeyState(VK_NUMLOCK).ToString
        ' Scroll Lock Status
        TextBox1.Text = GetKeyState(VK_SCROLL).ToString

تم تعديل هذه المشاركة بواسطة samerselo في 5 مايو 2006 في 17:31

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#4

وإذا أحببت يمكننا تغليف العملية في فئة Class كالتالي

Public Class LocksStatus

#Region " Declarations "
    ' Key Lock Declaration
    Private Const VK_CAPITAL = &H14
    Private Const VK_NUMLOCK = &H90
    Private Const VK_SCROLL = &H91

    ' Windows Api Function declaration
    Private Declare Auto Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Int32) As Short
#End Region

#Region " Properties "

    Public ReadOnly Property GetCapsLockState() As Boolean
        Get
            Return CBool(GetKeyState(VK_CAPITAL))
        End Get
    End Property

    Public ReadOnly Property GetNumLockstate() As Boolean
        Get
            Return CBool(GetKeyState(VK_NUMLOCK))
        End Get
    End Property

    Public ReadOnly Property GetScrollLockState() As Boolean
        Get
            Return CBool(GetKeyState(VK_SCROLL))
        End Get
    End Property

#End Region

End Class

ويكون استخدام الفئة الجديدة في غاية السهولة كالمثال

        Dim Ls As New LocksStatus
        Label1.Text = Ls.GetCapsLockState.ToString
        Label2.Text = Ls.GetNumLockstate.ToString
        Label3.Text = Ls.GetScrollLockState.ToString

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#5

أشكرك أخي samerselo على ردك الوافي...

سأجرب الطريقة وارد لك..

جزاك الله الف خير

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

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