Поделиться через


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" в метод. Чтобы представить несколько символов, добавьте каждый дополнительный символ к предыдущему символу. Чтобы представить буквы A, B и C, укажите параметр как ABC.

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

Предостережение

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

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

Ключ Код
BACKSPACE {BACKSPACE}, {BS}или {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL или DELETE {DELETE} или {DEL}
СТРЕЛКА ВНИЗ {DOWN}
END {END}
ENTER {ВВОД}или ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS или INSERT {INSERT} или {INS}
СТРЕЛКА ВЛЕВО {LEFT}
ЧИСЛОВАЯ БЛОКИРОВКА {NUMLOCK}
СТРАНИЦА ВНИЗ {PGDN}
СТРАНИЦА ВВЕРХ {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}
Вычитание клавиатуры {SUBTRACT}
Умножение клавиатуры {УМНОЖЕНИЕ}
Разделение клавиатуры {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" .

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