Caps Lock   zodpovězená otázka

VB6/VBA

Caute

Ako zapnem v programe CAPS LOCK na kvalesnici vo VB6?Dakujem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

deklarace

Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const VK_CAPITAL = &H14
Public Const KEYEVENTF_KEYUP = &H2
Public Const KEYEVENTF_EXTENDEDKEY = &H1

tlačítko Command1

Private Sub Command1_Click()
'zapnutí
    If GetKeyState(VK_CAPITAL) = 0 Then
        keybd_event VK_CAPITAL, 0, 0, 0
        keybd_event VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY, 0
    End If
'vypnutí
    If GetKeyState(VK_CAPITAL) <> 0 Then
        keybd_event VK_CAPITAL, 0, 0, 0
        keybd_event VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0
    End If
End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dakujem Jaroslav

Toto mam cervene.

Public Const VK_CAPITAL = &H14
Public Const KEYEVENTF_KEYUP = &H2
Public Const KEYEVENTF_EXTENDEDKEY = &H1

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud máte deklaraci konstanty přímo ve Form, nesmí být Public, ale Private.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

uz som Jaroslav pochopil.Deklaraci mam v module.Co som si vsak vsimol tak Caps Lock sa mi vypne az po 2 stlaceny.Kde moze byt problem?Dakujem

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Vložíte-li do formuláře StatusBar, tak pro požadované

ovládání CapsLock pomocí jeho Panelu postačí nastavit

Style panelu na sbrCaps.Příp. lze i panel pro ovládání

Insertu, přepínání numerické klávesnice...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

StatusBar som si na form vlozil ale niejak som nepochopil ako mozem ovladat zapnutie Caps Lock.Dajte mi este malu napovedu.Dakujem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zapatral som na internete a nasiel som toto.Mne to nevyhovuje ale mozno niekomu ano.Link. http://www.ulozto.cz/8859900/howto-turn-...

Option Explicit

Private kbArray As KeyboardBytes
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Type KeyboardBytes
    kbByte(0 To 255) As Byte
End Type
Private Const VK_CAPITAL = &H14

Function CapsLock() As Boolean
    CapsLock = (GetKeyState(VK_CAPITAL) And 1 = 1)
End Function

Private Sub Form_Load()
    If CapsLock() = 1 Then Label1 = "On" Else Label1 = "Off"
End Sub

Private Sub cmdToggle_Click()
    GetKeyboardState kbArray
    kbArray.kbByte(VK_CAPITAL) = IIf(kbArray.kbByte(VK_CAPITAL) = 1, 0, 1)
    SetKeyboardState kbArray

    If CapsLock() Then
        Label1.Caption = "On"
    Else
        Label1.Caption = "Off"
    End If
End Sub

Private Sub cmdTurnOn_Click()
    GetKeyboardState kbArray
    kbArray.kbByte(VK_CAPITAL) = 1
    SetKeyboardState kbArray

    If CapsLock() Then
        Label1.Caption = "On"
    Else
        Label1.Caption = "Off"
    End If
End Sub

Private Sub cmdTurnOff_Click()
    GetKeyboardState kbArray
    kbArray.kbByte(VK_CAPITAL) = 0
    SetKeyboardState kbArray

    If CapsLock() Then
        Label1.Caption = "On"
    Else
        Label1.Caption = "Off"
    End If
End Sub

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ve vlastnostech panelu StatusBaru,

možno i přes Custom v Properties

nastavit Style panelu, pak funguje

jako přepínač CapsLock.

Pokud to nenajdete, tak zkuste v kódu

něco jako :

StatusBar1.Panels(1).Style = sbrCaps

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Možná se pletu, nejspíš se jedná

jen o zobrazení stavu CapsLocku.

Omlouvám se...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Luboš

Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const VK_CAPITAL = &H14
Private Const KEYEVENTF_KEYUP = &H2

Private Sub Command1_Click()
    'stisk klávesy
    keybd_event VK_CAPITAL, 0, 0, 0
    'puštění klávesy
    keybd_event VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0
End Sub

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Omlouvám se, už to tady je. Musím si koupit silnější brýle.

Luboš

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud si půjčím kód od Luboše, pak u StatusBaru

funguje indikace stavu CapsLock i jeho přepínání:

Private Sub StatusBar1_PanelClick(ByVal Panel As MSComctlLib.Panel)
    If Panel.Style = sbrCaps Then
        'stisk klávesy
        keybd_event VK_CAPITAL, 0, 0, 0
        'puštění klávesy
        keybd_event VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0
    End If
End Sub

...

Já si zase budu vařit silnější kafe... :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dakujem vam vsetkym.Ja som to potreboval pouzit takto.Velmy ste mi pomohly.

Private Sub txtKod2_Click()
If GetKeyState(VK_CAPITAL) = 0 Then
        keybd_event VK_CAPITAL, 0, 0, 0
        keybd_event VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY, 0
    End If
End Sub

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback