SendKeys Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce metodi per l'invio di sequenze di tasti a un'applicazione.
public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
- Ereditarietà
-
SendKeys
Esempio
Nell'esempio di codice riportato di seguito viene illustrato come utilizzare il metodo Send. Per eseguire l'esempio, incollare il codice seguente in un modulo denominato Form1 contenente un pulsante denominato Button1. Verificare che gli eventi click siano associati ai metodi di gestione degli eventi in questo esempio. La proprietà del TabIndex controllo del pulsante deve essere impostata su 0. Quando l'esempio è in esecuzione, fare doppio clic sul modulo per attivare l'evento click del pulsante.
private:
// Clicking Button1 causes a message box to appear.
void Button1_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
MessageBox::Show( "Click here!" );
}
// Use the SendKeys.Send method to raise the Button1 click event
// and display the message box.
void Form1_DoubleClick( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Send the enter key; since the tab stop of Button1 is 0, this
// will trigger the click event.
SendKeys::Send( "{ENTER}" );
}
// Clicking Button1 causes a message box to appear.
private void Button1_Click(System.Object sender, System.EventArgs e)
{
MessageBox.Show("Click here!");
}
// Use the SendKeys.Send method to raise the Button1 click event
// and display the message box.
private void Form1_DoubleClick(object sender, System.EventArgs e)
{
// Send the enter key; since the tab stop of Button1 is 0, this
// will trigger the click event.
SendKeys.Send("{ENTER}");
}
' Clicking Button1 causes a message box to appear.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
MessageBox.Show("Click here!")
End Sub
' Use the SendKeys.Send method to raise the Button1 click event
' and display the message box.
Private Sub Form1_DoubleClick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.DoubleClick
' Send the enter key; since the tab stop of Button1 is 0, this
' will trigger the click event.
SendKeys.Send("{ENTER}")
End Sub
Commenti
Usare SendKeys per inviare sequenze di tasti e combinazioni di tasti all'applicazione attiva. Non è possibile creare istanze di questa classe. Per inviare una sequenza di tasti a una classe e continuare immediatamente con il flusso del programma, usare Send. Per attendere eventuali processi avviati dalla sequenza di tasti, usare SendWait.
Ogni chiave è rappresentata da uno o più caratteri. Per specificare un singolo carattere di tastiera, usare il carattere stesso. Ad esempio, per rappresentare la lettera A, passare la stringa "A" al metodo . Per rappresentare più di un carattere, aggiungere ogni carattere aggiuntivo a quello precedente. Per rappresentare le lettere A, B e C, specificare il parametro come "ABC".
Il segno più (+), il segno di caret (^), il segno di percentuale (%), tilde (~) e le parentesi () hanno significati speciali per SendKeys. Per specificare uno di questi caratteri, racchiuderlo tra parentesi graffe ({}). Ad esempio, per specificare il segno più, usare "{+}". Per specificare i caratteri di parentesi graffe, usare "{{}" e "{}}". Le parentesi quadre ([ ]) non hanno alcun significato speciale a SendKeys, ma è necessario racchiuderle tra parentesi graffe. In altre applicazioni, le parentesi quadre hanno un significato speciale che potrebbe essere significativo quando si verifica lo scambio di dati dinamici (DDE).
Attenzione
Se l'applicazione verrà usata a livello internazionale con un'ampia gamma di tastiere, è opportuno evitare l'uso di Send perché potrebbe generare risultati imprevedibili.
Per specificare i caratteri che non vengono visualizzati quando si preme un tasto, ad esempio INVIO o TAB, e i tasti che rappresentano azioni anziché caratteri, usare i codici nella tabella seguente.
Chiave | Codice |
---|---|
BACKSPACE | {BACKSPACE}, {BS}o {BKSP} |
BREAK | {BREAK} |
BLOC MAIUSC | {CAPSLOCK} |
DEL o DELETE | {DELETE} o {DEL} |
Freccia GIÙ | {DOWN} |
END | {END} |
INVIO | {ENTER} o ~ |
ESC | {ESC} |
HELP | {HELP} |
HOME | {HOME} |
INS o INSERT | {INSERT} o {INS} |
FRECCIA SINISTRA | {LEFT} |
BLOCCO NUM | {NUMLOCK} |
PGGIÙ | {PGDN} |
PGSU | {PGUP} |
SCHERMATA DI STAMPA | {PRTSC} (riservato per l'uso futuro) |
FRECCIA DESTRA | {RIGHT} |
SCORRIMENTO BLOCCO | {SCROLLLOCK} |
TAB | {TAB} |
FRECCIA SU | {UP} |
F1 | {F1} |
F2 | {F2} |
F3 | {F3} |
F4 | {F4} |
F5 | {F5} |
F6 | {F6} |
F7 | {F7} |
F8 | {F8} |
F9 | {F9} |
F10 | {F10} |
F11 | {F11} |
F12 | {F12} |
F13 | {F13} |
F14 | {F14} |
F15 | {F15} |
F16 | {F16} |
Aggiunta del tastierino | {ADD} |
Sottrazione del tastierino | {SOTTRAZIONE} |
Moltiplicare il tastierino | {MULTIPLY} |
Divisione del tastierino | {DIVIDE} |
Per specificare i tasti combinati con qualsiasi combinazione di tasti MAIUSC, CTRL e ALT, precedere il codice del tasto con uno o più dei codici seguenti.
Chiave | Codice |
---|---|
MAIUSC | + |
CTRL | ^ |
ALT | % |
Per specificare che qualsiasi combinazione di MAIUSC, CTRL e ALT deve essere premuta mentre vengono premuti diversi altri tasti, racchiudere il codice per tali tasti tra parentesi. Ad esempio, per specificare di tenere premuto MAIUSC mentre viene premuto E e C, usare "+(EC)". Per specificare di tenere premuto MAIUSC mentre viene premuto E, seguito da C senza MAIUSC, utilizzare "+EC".
Per specificare chiavi ripetute, usare il formato {numero chiave}. È necessario inserire uno spazio tra chiave e numero. Ad esempio, {LEFT 42} significa premere il tasto FRECCIA SINISTRA 42 volte; {h 10} significa premere H 10 volte.
Nota
Poiché non esiste alcun metodo gestito per attivare un'altra applicazione, è possibile usare questa classe all'interno dell'applicazione corrente o usare metodi windows nativi, ad esempio FindWindow
e SetForegroundWindow
, per forzare lo stato attivo su altre applicazioni.
Nota
La classe SendKeys è stata aggiornata per .NET Framework 3.0 per consentirne l'uso in applicazioni eseguite in Windows Vista. La sicurezza avanzata di Windows Vista (nota come Controllo dell'account utente) impedisce alla precedente implementazione di funzionare come previsto.
La classe SendKeys è soggetta a problemi di temporizzazione, che alcuni sviluppatori hanno dovuto risolvere. L'implementazione aggiornata è ancora soggetta a problemi di temporizzazione, ma è leggermente più veloce e può richiedere modifiche alle soluzioni alternative. La classe SendKeys cerca di usare prima l'implementazione precedente e, se il tentativo non riesce, usa la nuova implementazione. Di conseguenza, il comportamento della classe SendKeys potrebbe essere diverso a seconda del sistema operativo. Inoltre, quando la classe SendKeys usa la nuova implementazione, il metodo SendWait non attenderà che i messaggi siano elaborati quando vengono inviati a un altro processo.
Se l'applicazione si basa su un comportamento coerente indipendentemente dal sistema operativo, è possibile forzare la classe SendKeys a usare la nuova implementazione aggiungendo la seguente impostazione applicazione al file app.config.
<appSettings>
<add key="SendKeys" value="SendInput"/>
</appSettings>
Per forzare la classe SendKeys a usare l'implementazione precedente, usare invece il valore "JournalHook"
.
Metodi
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
Flush() |
Elabora tutti i messaggi di Windows attualmente presenti nella coda dei messaggi. |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
Send(String) |
Invia sequenze di tasti all'applicazione attiva. |
SendWait(String) |
Invia i tasti indicati all'applicazione attiva e successivamente attende l'elaborazione dei messaggi. |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |