BUG: Istruzione SendKeys più attiva disattivato il tasto BLOC NUM

Traduzione articoli Traduzione articoli
Identificativo articolo: 179987 - Visualizza i prodotti a cui si riferisce l’articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

L'esecuzione di almeno due istruzioni di InviaTasti in una riga determina la disattivazione del tasto BLOC NUM. Questo problema può inoltre riguarda i tasti BLOC MAIUSC e BLOC SCORR.

Cause

Questo problema si occupa una nidificazione di acquisire lo stato della tastiera. La prima istruzione SendKeys cattura un'istantanea dello stato della tastiera e Disattiva attiva o disattiva tutti i. La seconda istruzione SendKeys esegue prima la prima riprodotto da tutte le chiavi e ripristinare lo stato della tastiera. In questo modo, lo stato della tastiera viene registrato nuovamente per il secondo SendKeys, questa volta con attiva o disattiva tutti i ancora disattivato. Infine, lo stato della tastiera viene ripristinato lo stato successivo (nasconde).

Risoluzione

Per aggirare il problema, effettuare una delle seguenti operazioni:
  • Inviare tutti i caratteri in una singola istruzione SendKeys. - oppure -

  • Eseguire una funzione DoEvents tra ogni istruzione SendKeys. Tuttavia, a seconda della complessità dei tratti chiave, questa non funzionino in tutti i casi. - oppure -

  • Determinare l'impostazione della chiave BLOC NUM prima di eseguire SendKeys. Prima di utilizzare SendKeys, disattivare il BLOC NUM. Dopo aver utilizzato SendKeys, ripristinare l'impostazione precedente il BLOC NUM. Ciò avviene utilizzando le funzioni GetKeyboardState, keybd_event e SetKeyboardState API. Vedere la sezione Riferimenti sotto per ulteriori informazioni. - oppure -

  • Utilizzare le funzioni dell'API invece di SendKeys. Vedere la sezione Riferimenti sotto per ulteriori informazioni,

Status

Microsoft ha confermato che si tratta di un problema che riguarda solo i prodotti elencati all'inizio di questo articolo. Si è alla ricerca di questo bug e verranno qui nuove informazioni della Microsoft Knowledge Base riportato di seguito appena sarà disponibile.

Informazioni

Procedura per riprodurre il problema

  1. Avviare un nuovo progetto EXE standard in Visual Basic. In base all'impostazione predefinita, viene creato il progetto Form1.
  2. Aggiungere un oggetto CommandButtons a Form1.
  3. Copiare il codice seguente nella finestra del codice di Form1:
          Option Explicit
    
    
          Private Sub Command1_Click()
             SendKeys "a"
             SendKeys "b"
          End Sub
    						
  4. Scegliere <B>Avvia</B> dal menu <B>Esegui</B> oppure premere il tasto F5 per avviare il programma. Se la spia di BLOC NUM è disattivato, attivare il BLOC NUM chiaro premendo il tasto BLOC NUM. Fare clic su pulsante e si noti che la spia di BLOC NUM viene disattivata.
  5. Chiudere Visual Basic e ripetere i passaggi precedenti, questa volta aggiungendo DoEvents, come illustrato di seguito:
          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,
    						
    impedisce che si tenta di risolvere il problema venga eseguita correttamente.

Riferimenti

"Guida del programmatore di Visual Basic 5.0 all'API Win32" da Dan Appleman capitolo 6: hardware e funzioni di sistema

Per ulteriori informazioni, vedere il seguente articolo della Microsoft Knowledge Base riportato di seguito:
177674HOWTO: Attiva o disattiva BLOC NUM, BLOC MAIUSC e tasti BLOC SCORR

Proprietà

Identificativo articolo: 179987 - Ultima modifica: martedì 29 giugno 2004 - Revisione: 3.1
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual Basic for Applications 5.0
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 a 16 bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Chiavi: 
kbmt kbbug kbpending kbprogramming KB179987 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 179987
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Kontaktieren Sie uns, um weitere Hilfe zu erhalten

Kontaktieren Sie uns, um weitere Hilfe zu erhalten
Wenden Sie sich an den Answer Desk, um professionelle Hilfe zu erhalten.