SendKeys Класс

Определение

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

public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
Наследование
SendKeys

Примеры

В следующем примере кода показано, как использовать метод 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

Комментарии

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

Каждый ключ представлен одним или несколькими символами. Чтобы указать один символ клавиатуры, используйте сам символ. Например, чтобы представить букву А, передайте в метод строку "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}
Вычитание клавиатуры {SUBTRACT}
Умножение клавиатуры {MULTIPLY}
Разделение клавиатуры {DIVIDE}

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

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

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

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Flush()

Обрабатывает все сообщения Windows, находящиеся в настоящий момент в очереди сообщений.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
Send(String)

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

SendWait(String)

Отправляет данные об указанных клавишах активному приложению и ожидает окончания обработки сообщений.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

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