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" в метод. Чтобы представить несколько символов, добавьте каждый дополнительный символ к предыдущему символу. Чтобы представить буквы 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" .
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| Flush() |
Обрабатывает все сообщения Windows, которые в настоящее время находятся в очереди сообщений. |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| Send(String) |
Отправляет нажатия клавиш в активное приложение. |
| SendWait(String) |
Отправляет заданные ключи активному приложению, а затем ожидает обработки сообщений. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |