SendKeys.Send(String) Метод

Определение

Посылает сообщения о нажатии клавиш активному приложению.

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)

Параметры

keys
String

Строка, содержащая отправляемые данные о нажатиях клавиш.

Исключения

Отсутствует активное приложение для отправки сообщений о нажатии клавиш.

keys не представляет допустимые нажатия клавиш.

Примеры

В следующем примере кода показано, как использовать Send метод. Чтобы запустить пример, вставьте следующий код в форму с именем Form1, содержащую кнопку с именем Button1. Убедитесь, что события щелчка связаны с методами обработки событий в этом примере. Свойство элемента управления "Кнопка" TabIndex должно иметь значение 0. При запуске примера дважды щелкните форму, чтобы активировать событие нажатия кнопки.

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

Комментарии

Каждый ключ представлен одним или несколькими символами. Чтобы указать один символ клавиатуры, используйте сам символ. Например, чтобы представить букву А, передайте в метод строку "A". Чтобы представить несколько символов, добавьте каждый дополнительный символ к предыдущему символу. Чтобы представить буквы A, B и C, укажите параметр как ABC.

Знак плюса (+), курсор (^), знак процента (%), тильда (~) и круглые скобки () имеют особые SendKeysзначения. Чтобы указать один из этих символов, заключите его в фигурные скобки ({}). Например, чтобы указать знак "плюс", используйте "{+}". Чтобы указать символы фигурных скобок, используйте "{{}" и "{}}". Скобки ([ ]) не имеют особого значения SendKeys, но их необходимо заключить в фигурные скобки. В других приложениях квадратные скобки имеют особое значение, которое может быть значительным при динамическом обмене данными (DDE).

Внимание!

Если приложение предназначено для международного использования с различными клавиатурами, применение метода Send может иметь непредсказуемые результаты и его следует избегать.

Чтобы указать символы, которые не отображаются при нажатии клавиши, например ВВОД или TAB, и клавиши, представляющие действия, а не символы, используйте коды в следующей таблице.

Ключ Код
BACKSPACE {BACKSPACE}, {BS}или {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL или DELETE {DELETE} или {DEL}
СТРЕЛКА ВНИЗ {DOWN}
END {END}
ВВОД {ВВОД}или ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS или INSERT {INSERT} или {INS}
СТРЕЛКА ВЛЕВО {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
ЭКРАН ПЕЧАТИ {PRTSC} (зарезервировано для дальнейшего использования)
СТРЕЛКА ВПРАВО {RIGHT}
БЛОКИРОВКА ПРОКРУТКИ {SCROLLLOCK}
TAB {TAB}
СТРЕЛКА ВВЕРХ {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}
Добавление клавиатуры {ADD}
Вычитание клавиатуры {ВЫЧИТАНИЕ}
Умножение клавиатуры {MULTIPLY}
Раздел на клавиатуре {DIVIDE}

Чтобы указать ключи в сочетании с любым сочетанием клавиш SHIFT, CTRL и ALT, перед кодом ключа перед одним или несколькими из следующих кодов.

Ключ Код
SHIFT +
CTRL ^
ALT %

Чтобы указать, что любое сочетание клавиш SHIFT, CTRL и ALT должно быть удерживано, а несколько других клавиш нажимаются, заключите код этих ключей в круглые скобки. Например, чтобы указать, чтобы сохранить shift, пока нажаты клавиши E и C, используйте "+(EC)". Чтобы указать, что нужно удерживать shift во время нажатия клавиши E, а затем C без SHIFT, используйте клавиши +EC.

Чтобы указать повторяющиеся ключи, используйте форму {номер ключа}. Необходимо поместить пробел между ключом и числом. Например, {LEFT 42} означает нажатие клавиши СТРЕЛКА ВЛЕВО 42 раза; {h 10} означает нажатие клавиши H 10 раз.

Примечание

Так как нет управляемого метода для активации другого приложения, можно либо использовать этот класс в текущем приложении, либо использовать собственные методы Windows, напримерFindWindow, и SetForegroundWindowпринудительно сосредоточиться на других приложениях.

Примечание

Класс SendKeys был обновлен в .NET Framework 3.0, что позволило использовать его в приложениях, работающих в Windows Vista. Усиленная система безопасности Windows Vista (известная как контроль учетных записей или UAC) не позволяет предыдущей реализации работать должным образом.

Класс SendKeys подвержен проблемам со временем, которые пришлось решать некоторым разработчикам. Обновленная реализация по-прежнему подвержена этим проблемам, но она работает немного быстрее, поэтому существующие решения может потребоваться переработать. Класс SendKeys сначала пытается использовать предыдущую реализацию, и если это не удается, использует новую реализацию. В результате класс SendKeys может работать по-разному в разных операционных системах. Кроме того, при использовании новой реализации класса SendKeys метод SendWait не будет дожидаться обработки сообщений, если они отправляются другому процессу.

Если необходимо обеспечить согласованное поведение приложения независимо от операционной системы, можно заставить класс SendKeys использовать новую реализацию, добавив указанный ниже параметр приложения в файл app.config.

<appSettings>

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

</appSettings>

Для принудительного использования классом SendKeys предыдущей реализации задайте значение "JournalHook" .

Применяется к