Condividi tramite


SendKeys.Send(String) Metodo

Definizione

Invia sequenze di tasti all'applicazione attiva.

public:
 static void Send(System::String ^ keys);
public static void Send (string keys);
static member Send : string -> unit
Public Shared Sub Send (keys As String)

Parametri

keys
String

Stringa delle sequenze di tasti da inviare.

Eccezioni

Non è presente alcuna applicazione attiva alla quale inviare sequenze di tasti.

keys non rappresenta sequenze di tasti valide.

Esempio

Nell'esempio di codice seguente viene illustrato come usare il Send metodo . 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 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

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, accodare ogni carattere aggiuntivo a quello precedente. Per rappresentare le lettere A, B e C, specificare il parametro come "ABC".

Il segno più (+), il punto di inserimento (^), il segno di percentuale (%), la 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 parentesi graffe, usare "{{}" e "{}}". Le parentesi quadre ([ ]) non hanno un significato speciale per 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 dinamico .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, utilizzare i codici nella tabella seguente.

Chiave Codice
BACKSPACE {BACKSPACE}, {BS}o {BKSP}
BREAK {BREAK}
BLOC MAIUSC {CAPSLOCK}
CANC 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}
STAMPA SCHERMO {PRTSC} (riservato per uso futuro)
FRECCIA DESTRA {RIGHT}
BLOC DI SCORRIMENTO {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 oppure usare metodi nativi Windows, 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" .

Si applica a