Cara mengaktifkan kunci NUM, CAPS LOCK dan kunci GULIR kunci

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 177674 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menunjukkan bagaimana untuk beralih NUM LOCK, CAPS LOCK, dan GULIR KUNCI tombol di bawah Windows 95, Windows 98, Windows Me, Windows NT, atau Windows 2000.

INFORMASI LEBIH LANJUT

Untuk beralih NUM LOCK, CAPS LOCK atau kunci GULIR kunci, Anda dapat menggunakan logika berikut:
  1. Menggunakan fungsi GetKeyboardState untuk menentukan negara kunci.
  2. Menentukan sistem operasi yang sedang digunakan dengan GetVersionEx API. (Windows 95/98/Me dan Windows NT/2000 memerlukan metode yang berbeda untuk toggling kunci ini.)
  3. Di bawah Windows 95, Windows 98, atau Windows Me, menggunakan fungsi SetKeyboardState API untuk mengatur negara kunci. Di bawah Windows NT atau Windows 2000, gunakan fungsi keybd_event untuk mensimulasikan tekan tombol.

Contoh ini menunjukkan bagaimana untuk mengaktifkan ini tiga tombol "on" jika mereka "off." Contoh ini dapat dimodifikasi dengan mudah untuk beralih mereka lepas atau hanya untuk memeriksa keadaan.

Contoh proyek

  1. Memulai sebuah proyek Standard EXE yang baru dalam Visual Basic. Form1 dibuat oleh default.
  2. Tambah CommandButton pada Form1.
  3. Tambahkan kode berikut ke bagian umum Deklarasi Form1:
          ' Declare Type for API call:
          Private Type OSVERSIONINFO
            dwOSVersionInfoSize As Long
            dwMajorVersion As Long
            dwMinorVersion As Long
            dwBuildNumber As Long
            dwPlatformId As Long
            szCSDVersion As String * 128   '  Maintenance string for PSS usage
          End Type
    
          ' API declarations:
    
          Private Declare Function GetVersionEx Lib "kernel32" _
             Alias "GetVersionExA" _
             (lpVersionInformation As OSVERSIONINFO) As Long
    
          Private Declare Sub keybd_event Lib "user32" _
             (ByVal bVk As Byte, _
              ByVal bScan As Byte, _
              ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    
          Private Declare Function GetKeyboardState Lib "user32" _
             (pbKeyState As Byte) As Long
    
          Private Declare Function SetKeyboardState Lib "user32" _
             (lppbKeyState As Byte) As Long
    
          ' Constant declarations:
          Const VK_NUMLOCK = &H90
          Const VK_SCROLL = &H91
          Const VK_CAPITAL = &H14
          Const KEYEVENTF_EXTENDEDKEY = &H1
          Const KEYEVENTF_KEYUP = &H2
          Const VER_PLATFORM_WIN32_NT = 2
          Const VER_PLATFORM_WIN32_WINDOWS = 1
    
  4. Tambahkan kode berikut untuk kegiatan klik CommandButton:
        Private Sub Command1_Click()
          Dim o As OSVERSIONINFO
          Dim NumLockState As Boolean
          Dim ScrollLockState As Boolean
          Dim CapsLockState As Boolean
    
          o.dwOSVersionInfoSize = Len(o)
          GetVersionEx o
          Dim keys(0 To 255) As Byte
          GetKeyboardState keys(0)
    
          ' NumLock handling:
          NumLockState = keys(VK_NUMLOCK)
          If NumLockState <> True Then    'Turn numlock on
            If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then  '=== Win95/98
    
              keys(VK_NUMLOCK) = 1
              SetKeyboardState keys(0)
            ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then   '=== WinNT
            'Simulate Key Press
              keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
            'Simulate Key Release
              keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY _
                 Or KEYEVENTF_KEYUP, 0
            End If
          End If
    
          ' CapsLock handling:
          CapsLockState = keys(VK_CAPITAL)
          If CapsLockState <> True Then    'Turn capslock on
            If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then  '=== Win95/98
              keys(VK_CAPITAL) = 1
              SetKeyboardState keys(0)
            ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then   '=== WinNT
            'Simulate Key Press
              keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
            'Simulate Key Release
              keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY _
                 Or KEYEVENTF_KEYUP, 0
            End If
          End If
    
          ' ScrollLock handling:
          ScrollLockState = keys(VK_SCROLL)
          If ScrollLockState <> True Then    'Turn Scroll lock on
            If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then  '=== Win95/98
              keys(VK_SCROLL) = 1
              SetKeyboardState keys(0)
            ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then   '=== WinNT
            'Simulate Key Press
              keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
            'Simulate Key Release
              keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY _
                Or KEYEVENTF_KEYUP, 0
            End If
          End If
        End Sub
    
  5. Tekan tombol F5 untuk menjalankan program. Klik CommandButton. Negara CAPS LOCK, NUM LOCK, dan kunci GULIR kunci semua harus "on."

REFERENSI

Untuk informasi tambahan, silakan lihat artikel berikut di Basis Pengetahuan Microsoft:
127190: Bagaimana untuk beralih NUM LOCK, CAPS LOCK, dan kunci GULIR kunci

Properti

ID Artikel: 177674 - Kajian Terakhir: 16 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
Kata kunci: 
kbhowto kbmt KB177674 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:177674

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com