CHYBA: Více příkaz SendKeys vypne klávesy NumLock

Příznaky

Provedení alespoň dva příkazy PředatKlávesovéÚhozy za sebou má za následek vypnutí klávesy NumLock. Tento problém může ovlivnit také klávesy CAPS LOCK a SCROLL LOCK.

Příčina

Tento problém se zabývá vnořování zachycení stavu klávesnice. První příkaz SendKeys trvá snímek stavu klávesnice a vypne všechny přepíná. Druhý příkaz SendKeys provede před první hraje, všechny klíče a obnovení stavu klávesnice. Tak stav klávesnice zaznamenané znovu druhého PředatKlávesovéÚhozy, tentokrát se všechny přepíná stále vypnutý. Nakonec stav klávesnice je obnovena později (přepíná vypnout).

Řešení

Chcete-li tento problém vyřešit, proveďte jednu z následujících akcí:

  • Odešlete všechny znaky v jediném příkazu SendKeys. - nebo -


  • Provedení funkce DoEvents mezi každý příkaz SendKeys. V závislosti na složitosti klíče tahy však pravděpodobně nebude fungovat ve všech případech. - nebo -


  • Určení nastavení klávesy NumLock před použitím PředatKlávesovéÚhozy. Vypněte NumLock před použitím PředatKlávesovéÚhozy. Po použití PředatKlávesovéÚhozy, obnovte na původní hodnotu NumLock. To lze provést pomocí funkcí GetKeyboardState keybd_event a rozhraní API SetKeyboardState. Naleznete v části ODKAZY níže Další informace. - nebo -


  • Pomocí funkcí rozhraní API namísto PředatKlávesovéÚhozy. Naleznete v části ODKAZY níže Další informace

Stav

Společnost Microsoft potvrzuje, že se jedná o chybu v produktech společnosti uvedených na začátku tohoto článku. Jsme jsou zkoumá tuto chybu a bude účtovat nové informace zde znalostní báze Microsoft Knowledge Base Jakmile je k dispozici.

Další informace

Kroky pro reprodukci chování

  1. Spuštění nového projektu standardní EXE v jazyce Visual Basic. Ve výchozím nastavení je vytvořen formulář Form1.
  2. Přidáte CommandButton Form1.
  3. Zkopírujte následující kód do okna kódu Form1:
          Option Explicit

    Private Sub Command1_Click()
    SendKeys "a"
    SendKeys "b"
    End Sub

  4. V nabídce Run klepněte na tlačítko Start nebo stiskněte klávesu F5 ke spuštění programu. Je-li indikátor NUM LOCK vypnout, zapněte NumLock světla stisknutím klávesy NUM LOCK. Klepněte CommandButton a Všimněte si, že indikátor NUM LOCK bude vypnuta.
  5. Ukončete aplikaci Visual Basic a opakujte kroky výše; Tentokrát je přidávání DoEvents, takto:

          Private Sub Command1_Click()         SendKeys "a"
    DoEvents
    SendKeys "b"
    End Sub

    NOTE: You should restart Visual Basic before trying the DoEvents
    solution. Otherwise, the keyboard state may be set incorrectly,

    jakýkoli pokus o řešení brání úspěchu.

Odkazy

"Visual Basic 5.0 Programmer's Guide API Win32" podle daň Appleman kapitola 6: hardwaru a funkce systému


Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
177674 POSTUPY: přepnout NUM LOCK, CAPS LOCK a SCROLL LOCK klávesy
Vlastnosti

ID článku: 179987 - Poslední kontrola: 10. 1. 2017 - Revize: 1

Váš názor