SendKeys Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece métodos para enviar pressionamentos de teclas para um aplicativo.
public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
- Herança
-
SendKeys
Exemplos
O exemplo de código a seguir demonstra como usar o Send método . Para executar o exemplo, cole o código a seguir em um formulário chamado Form1 que contém um botão chamado Button1. Verifique se os eventos de clique estão associados aos métodos de manipulação de eventos neste exemplo. A propriedade do controle de TabIndex botão deve ser definida como 0. Quando o exemplo estiver em execução, clique duas vezes no formulário para disparar 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
Comentários
Use SendKeys para enviar pressionamentos de tecla e combinações de pressionamento de tecla para o aplicativo ativo. Não é possível criar uma instância dessa classe. Para enviar um pressionamento de tecla para uma classe e continuar imediatamente com o fluxo do programa, use Send. Para aguardar todos os processos iniciados pelo pressionamento de tecla, use SendWait.
Cada chave é representada por um ou mais caracteres. Para especificar um único caractere de teclado, use o próprio caractere. Por exemplo, para representar a letra A, passe a cadeia de caracteres "A" para o método . Para representar mais de um caractere, acrescente cada caractere adicional ao que o precede. Para representar as letras A, B e C, especifique o parâmetro como "ABC".
O sinal de adição (+), o cursor (^), o sinal de porcentagem (%), o til (~) e os parênteses () têm significados especiais para SendKeys. Para especificar um desses caracteres, coloque-o entre chaves ({}). Por exemplo, para especificar o sinal de adição, use "{+}". Para especificar caracteres de chave, use "{{}" e "{}}". Colchetes ([ ]) não têm nenhum significado especial para SendKeys, mas você deve colocá-los entre chaves. Em outros aplicativos, os colchetes têm um significado especial que pode ser significativo quando ocorre a DDE (troca dinâmica de dados).
Cuidado
Se seu aplicativo for destinado ao uso internacional com uma variedade de teclados, o uso de Send poderá produzir resultados imprevisíveis e deve ser evitado.
Para especificar caracteres que não são exibidos quando você pressiona uma tecla, como ENTER ou TAB, e teclas que representam ações em vez de caracteres, use os códigos na tabela a seguir.
Chave | Código |
---|---|
BACKSPACE | {BACKSPACE}, {BS}ou {BKSP} |
BREAK | {BREAK} |
CAPS LOCK | {CAPSLOCK} |
DEL ou DELETE | {DELETE} ou {DEL} |
SETA PARA BAIXO | {DOWN} |
END | {END} |
Enter | {ENTER} ou ~ |
ESC | {ESC} |
HELP | {HELP} |
HOME | {HOME} |
INS ou INSERT | {INSERT} ou {INS} |
SETA PARA A ESQUERDA | {LEFT} |
NUM LOCK | {NUMLOCK} |
PAGE DOWN | {PGDN} |
PAGE UP | {PGUP} |
PRINT SCREEN | {PRTSC} (reservado para uso futuro) |
SETA PARA A DIREITA | {RIGHT} |
SCROLL LOCK | {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} |
Subtração do teclado | {SUBTRACT} |
Multiplicação do teclado | {MULTIPLY} |
Divisão do teclado | {DIVIDE} |
Para especificar chaves combinadas com qualquer combinação das teclas SHIFT, CTRL e ALT, preceda o código de chave com um ou mais dos códigos a seguir.
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, coloque o código dessas teclas entre parênteses. Por exemplo, para especificar para manter shift pressionado enquanto E e C são pressionados, use "+(EC)". Para especificar para manter shift pressionado enquanto E é pressionado, seguido por C sem SHIFT, use "+EC".
Para especificar chaves repetidas, use o formulário {número de chave}. Você deve colocar um espaço entre chave e número. Por exemplo, {LEFT 42} significa pressionar a tecla seta para a esquerda 42 vezes; {h 10} significa pressionar H 10 vezes.
Observação
Como não há nenhum método gerenciado para ativar outro aplicativo, você pode usar essa classe dentro do aplicativo atual ou usar métodos nativos do Windows, como FindWindow
e SetForegroundWindow
, para forçar o foco em outros aplicativos.
Observação
A SendKeys classe foi atualizada para o .NET Framework 3.0 para habilitar seu uso em aplicativos executados no Windows Vista. A segurança avançada do Windows Vista (conhecida como Controle de Conta de Usuário ou UAC) impede que a implementação anterior funcione conforme o esperado.
A SendKeys classe é suscetível a problemas de tempo, que alguns desenvolvedores tiveram que resolver. A implementação atualizada ainda está suscetível a problemas de atraso, mas é ligeiramente mais rápida e pode exigir alterações para as soluções alternativas. A SendKeys classe tenta usar a implementação anterior primeiro e, se isso falhar, usa a nova implementação. Como resultado, a SendKeys classe pode se comportar de forma diferente em diferentes sistemas operacionais. Além disso, quando a SendKeys classe usa a nova implementação, o método não aguardará que as SendWait mensagens sejam processadas quando forem enviadas para outro processo.
Se o aplicativo depender de um comportamento consistente, independentemente do sistema operacional, você poderá forçar a SendKeys classe a usar a nova implementação adicionando a seguinte configuração de aplicativo ao arquivo 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
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
Flush() |
Processa todas as mensagens do Windows que estão na fila de mensagens. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
Send(String) |
Envia pressionamentos de teclas para um aplicativo ativo. |
SendWait(String) |
Envia chaves especificadas para o aplicativo ativo e aguarda até que as mensagens sejam processadas. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |