SendKeys.Send(String) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Envia as teclas para a aplicação ativa.
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)
Parâmetros
- keys
- String
A sequência de teclas a enviar.
Exceções
Não existe uma aplicação ativa para enviar pressionamentos de teclas.
keys não representa teclas válidas.
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
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.