Condividi tramite


SendKeys Classe

Definizione

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 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 relativi 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

Usare SendKeys per inviare sequenze di tasti e combinazioni di sequenze di tasti all'applicazione attiva. Impossibile creare un'istanza di questa classe. Per inviare una sequenza di tasti a una classe e continuare immediatamente con il flusso del programma, usare Send. Per attendere i 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 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 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 è destinata all'uso internazionale con una varietà di tastiere, l'uso di Send potrebbe produrre risultati imprevedibili e deve essere evitato.

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}
CANC o DELETE {DELETE} o {DEL}
FRECCIA VERSO IL BASSO {DOWN}
END {END}
ENTER {ENTER} o ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS o INSERT {INSERT} o {INS}
FRECCIA SINISTRA {LEFT}
BLOCCO NUM {NUMLOCK}
PAGINA GIÙ {PGDN}
PAGINA SU {PGUP}
SCHERMATA DI STAMPA {PRTSC} (riservato per uso futuro)
FRECCIA DESTRA {RIGHT}
BLOC DI SCORRIMENTO {SCROLLLOCK}
SCHEDA {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 {SUBTRACT}
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 mantenuta mentre vengono premuti diversi altri tasti, racchiudere il codice tra parentesi. Ad esempio, per specificare di tenere premuto MAIUSC mentre E e C vengono premuti, usare "+(EC)". Per specificare di tenere premuto MAIUSC mentre viene premuto E, seguito da C senza MAIUSC, usare "+EC".

Per specificare chiavi ripetute, usare il formato {key number}. È 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.

Annotazioni

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.

Annotazioni

La SendKeys classe è stata aggiornata per .NET Framework 3.0 per abilitarne l'uso nelle applicazioni eseguite in Windows Vista. La sicurezza avanzata di Windows Vista (nota come controllo dell'account utente o controllo dell'account utente) impedisce l'implementazione precedente di funzionare come previsto.

La SendKeys classe è 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 potrebbe richiedere modifiche alle soluzioni alternative. La SendKeys classe tenta di usare prima l'implementazione precedente e, in caso di errore, usa la nuova implementazione. Di conseguenza, la SendKeys classe può comportarsi in modo diverso in sistemi operativi diversi. Inoltre, quando la SendKeys classe usa la nuova implementazione, il SendWait metodo non attenderà l'elaborazione dei messaggi quando vengono inviati a un altro processo.

Se l'applicazione si basa su un comportamento coerente indipendentemente dal sistema operativo, è possibile forzare la SendKeys classe a usare la nuova implementazione aggiungendo l'impostazione dell'applicazione seguente al file app.config.

<appSettings>

<add key="SendKeys" value="SendInput"/>

</appSettings>

Per forzare la SendKeys classe a usare l'implementazione precedente, usare invece il valore "JournalHook" .

Metodi

Nome Descrizione
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 il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
Send(String)

Invia le sequenze di tasti all'applicazione attiva.

SendWait(String)

Invia le chiavi fornite all'applicazione attiva e quindi attende l'elaborazione dei messaggi.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a