È possibile che i caratteri digitati in una casella di testo vengano ripetuti

Sintomi

Quando si digitano caratteri in una casella di testo (controllo di modifica), è possibile che tali caratteri vengano ripetuti dal programma in uso. Quando, ad esempio, in Microsoft Internet Explorer si usa MAIUSC per digitare una lettera maiuscola in una casella di testo, è possibile che in Internet Explorer tale lettera venga ripetuta dal programma in cui viene visualizzata la casella di testo. Questo problema si verifica dopo che è stata installata la patch di protezione MS03-045 (824141), la correzione rapida documentata nell'articolo 822428 della Microsoft Knowledge Base o una correzione rapida successiva.

Per ulteriori informazioni sulla patch di protezione MS03-045 (824141), visitare il seguente sito Web Microsoft: Per ulteriori informazioni sulla correzione rapida 822428, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito (il contenuto potrebbe essere in inglese):
822428 Nel Blocco note i caratteri vengono eliminati o persi quando in Windows 2000 si usa un lettore di swipe card o una tastiera

Cause

Gli aggiornamenti trattati nella sezione "Sintomi" di questo articolo cambiano la modalità con cui i controlli di modifica a riga singola e a più righe gestiscono i messaggi delle finestra WM_CHAR. Il controllo di modifica rispetta ora il numero di ripetizioni dei caratteri specificato nel breve testo del parametro lParam del messaggio. Il numero di ripetizioni specificato nel parametro lParam è il numero di caratteri che verrà inserito nel controllo di modifica quando questo gestisce un messaggio WM_CHAR.

Se i programmi specificano in modo errato il numero di ripetizioni quando inviano messaggi WM_CHAR a un controllo di modifica, verranno inseriti più caratteri. Prima che fossero installati gli aggiornamenti elencati nella sezione "Sintomi" di questo articolo, il controllo di modifica non rispettava il numero di ripetizioni specificato.

Risoluzione

Per risolvere il problema, contattare il produttore del programma per conoscere la disponibilità di un eventuale aggiornamento.

Workaround

Per risolvere questo problema, utilizzare uno dei metodi descritti di seguito.

Metodo 1: Utilizzo di BLOC MAIUSC per digitare lettere maiuscole

Se questo problema si verifica quando si utilizza MAIUSC per digitare lettere maiuscole, ricorrere a BLOC MAIUSC.

Metodo 2: Operazioni di copia e incolla di testo da un altro programma

Creare il testo da immettere nella casella di testo in un altro programma, ad esempio il Blocco note, quindi copiare il testo e incollarlo nella casella di testo.

Informazioni

Per ulteriori informazioni sulla corretta formattazione del parametro lParam del messaggio WM_CHAR, visitare il seguente sito Web Microsoft (informazioni in lingua inglese):Se i programmi Microsoft Visual Basic, di cui si dispone, presentano questo problema, modificarli in modo che venga verificata la loro dichiarazione di SendMessage o PostMessage, affinché il parametro lParam venga passato come ByVal anziché ByRef quando vengono inviati o inseriti messaggi WM_CHAR.
Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito (il contenuto potrebbe essere in inglese):
187918 PRB: SendMessage dà risultati imprevisti per alcuni messaggi

Modificare ad esempio il seguente codice
Private Declare Function SendMessageW Lib "user32" (ByVal HWND As Long, ByVal wMsg 
As Long, ByVal wParam As Long, lParam As Any) As Long
in:
Private Declare Function SendMessageW Lib "user32" (ByVal HWND As Long, ByVal wMsg 
As Long, ByVal wParam As Long, Byval lParam As Any) As Long
Proprietà

ID articolo: 831739 - Ultima revisione: 21 mag 2007 - Revisione: 1

Feedback