SendKeys Classe

Definição

Fornece métodos para enviar pressionamentos de tecla para uma aplicação.

public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
Herança
SendKeys

Exemplos

O exemplo de código seguinte demonstra como usar o Send método. Para executar o exemplo, cole o seguinte código numa forma chamada Form1 contendo um botão chamado Button1. Certifique-se de que os eventos de clique estão associados aos seus métodos de gestão de eventos neste exemplo. A propriedade do TabIndex controlo do botão deve estar definida para 0. Quando o exemplo está a correr, clique duas vezes no formulário para ativar o evento de clique do botão.

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

Observações

Use SendKeys para enviar as teclas e combinações de teclas para a aplicação ativa. Esta classe não pode ser instanciada. Para enviar uma tecla a uma classe e continuar imediatamente com o fluxo do seu programa, use Send. Para esperar por quaisquer processos iniciados pela tecla, use SendWait.

Cada tecla é representada por um ou mais caracteres. Para especificar um único carácter de teclado, use o próprio caractere. Por exemplo, para representar a letra A, passe a cadeia "A" ao método. Para representar mais do que um carácter, acrescente cada caractere adicional ao anterior. Para representar as letras A, B e C, especifique o parâmetro como "ABC".

O sinal de mais (+), o caret (^), o sinal de percentagem (%), a tilde (~) e os parênteses () têm significados especiais para SendKeys. Para especificar um destes caracteres, inclua-o entre colchetes ({}). Por exemplo, para especificar o sinal de mais, use "{+}". Para especificar caracteres de colchete, use "{{}" e "{}}". Os parênteses ([ ]) não têm um significado especial para SendKeys, mas deve envolvê-los em braçadeiras. Noutras aplicações, os parênteses têm um significado especial que pode ser significativo quando ocorre troca dinâmica de dados (DDE).

Caution

Se a sua aplicação for destinada a uso internacional com uma variedade de teclados, a utilização de Send pode produzir resultados imprevisíveis e deve ser evitada.

Para especificar caracteres que não são exibidos quando pressiona uma tecla, como ENTER ou TAB, e teclas que representam ações em vez de caracteres, use os códigos na tabela seguinte.

Chave Código
BACKSPACE {BACKSPACE}, {BS}, ou {BKSP}
BREAK {PAUSA}
Caps Lock {MAIÚSCULAS}
DEL ou DELETE {DELETE} ou {DEL}
SETA PARA BAIXO {ABAIXO}
END {FIM}
ENTER {ENTER} ou ~
ESC {ESC}
HELP {AJUDA}
HOME {HOME}
INS ou INSERT {INSERT} ou {INS}
SETA PARA A ESQUERDA {ESQUERDA}
FECHADURA NUM {NUMLOCK}
PÁGINA ABAIXO {PGDN}
PÁGINA ACIMA {PGUP}
Print Screen {PRTSC} (reservado para uso futuro)
SETA PARA A DIREITA {CERTO}
FECHADURA DE ROLO {SCROLLLOCK}
TAB {TAB}
SETA PARA CIMA {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}
Adicionar teclado {ADD}
Subtrair o teclado {SUBTRAIR}
Multiplicação por teclado {MULTIPLICAR}
Divisão por teclado {DIVIDE}

Para especificar teclas combinadas com qualquer combinação das teclas SHIFT, CTRL e ALT, anteceda o código da tecla com um ou mais dos seguintes códigos.

Chave Código
SHIFT +
CTRL ^
ALT %

Para especificar que qualquer combinação de SHIFT, CTRL e ALT deve ser mantida pressionada enquanto várias outras teclas são pressionadas, inclua o código dessas teclas entre parênteses. Por exemplo, para especificar que deve manter pressionado SHIFT enquanto E e C são pressionados, use "+(EC)". Para especificar para manter pressionado SHIFT enquanto E é pressionado, seguido de C sem SHIFT, use "+EC".

Para especificar as chaves repetidas, use a forma {número da chave}. Tens de colocar um espaço entre a chave e o número. Por exemplo, {LEFT 42} significa pressionar a tecla SETA ESQUERDA 42 vezes; {h 10} significa premer H 10 vezes.

Note

Como não existe um método gerido para ativar outra aplicação, pode usar esta classe dentro da aplicação atual ou usar métodos nativos de Windows, como FindWindow e SetForegroundWindow, para forçar o foco noutras aplicações.

Note

A classe SendKeys foi atualizada para o .NET Framework 3.0 para permitir a sua utilização em aplicações que correm em Windows Vista. A segurança reforçada do Windows Vista (conhecido como Controlo de Conta de Utilizador ou UAC) impede que a implementação anterior funcione como esperado.

A SendKeys classe é suscetível a problemas de timing, que alguns programadores tiveram de contornar. A implementação atualizada ainda é suscetível a problemas de temporização, mas é ligeiramente mais rápida e pode exigir alterações às soluções alternativas. A SendKeys classe tenta usar primeiro a implementação anterior e, se esta falhar, usa a nova implementação. Como resultado, a SendKeys classe pode comportar-se de forma diferente em diferentes sistemas operativos. Além disso, quando a SendKeys classe utiliza a nova implementação, o SendWait método não espera que as mensagens sejam processadas quando são enviadas para outro processo.

Se a sua aplicação depender de um comportamento consistente independentemente do sistema operativo, pode forçar a SendKeys classe a usar a nova implementação adicionando a seguinte definição de aplicação ao seu ficheiro de app.config.

<appSettings>

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

</appSettings>

Para forçar a SendKeys classe a usar a implementação anterior, use o valor "JournalHook" em vez disso.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Flush()

Processa todas as mensagens do Windows atualmente na fila de mensagens.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
Send(String)

Envia as teclas para a aplicação ativa.

SendWait(String)

Envia as chaves dadas para a aplicação ativa e depois espera que as mensagens sejam processadas.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a