SendKeys Class

Definition

Stellt Methoden für das Senden von Tastatureingaben an eine Anwendung bereit.Provides methods for sending keystrokes to an application.

public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
Inheritance
SendKeys

Examples

Das folgende Codebeispiel zeigt, wie Sie die Send-Methode verwenden.The following code example demonstrates how to use the Send method. Fügen Sie den folgenden Code in ein Formular namens Form1 ein, das eine Schaltfläche mit dem Namen Button1 enthält, um das Beispiel auszuführen.To run the example, paste the following code in a form called Form1 containing a button called Button1. Stellen Sie sicher, dass die Click-Ereignisse mit den Ereignis Behandlungsmethoden in diesem Beispiel verknüpft sind.Ensure the click events are associated with their event-handling methods in this example. Die TabIndex-Eigenschaft des Schaltflächen-Steuer Elements muss auf 0 festgelegt werden.The button control's TabIndex property should be set to 0. Wenn das Beispiel ausgeführt wird, doppelklicken Sie auf das Formular, um das Click-Ereignis der Schaltfläche aufzurufenden.When the example is running, double-click the form to trigger the button's click event.

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

Remarks

Verwenden Sie SendKeys, um Tastenkombinationen und Tastatureingaben an die aktive Anwendung zu senden.Use SendKeys to send keystrokes and keystroke combinations to the active application. Diese Klasse kann nicht instanziiert werden.This class cannot be instantiated. Verwenden Sie Send, um eine Tastenkombination an eine Klasse zu senden und sofort mit dem Fluss des Programms fortzufahren.To send a keystroke to a class and immediately continue with the flow of your program, use Send. Verwenden Sie SendWait, um auf Prozesse zu warten, die mit der Tastatureingabe gestartet wurden.To wait for any processes started by the keystroke, use SendWait.

Jeder Schlüssel wird durch ein oder mehrere Zeichen dargestellt.Each key is represented by one or more characters. Um ein einzelnes Tastatur Zeichen anzugeben, verwenden Sie das Zeichen selbst.To specify a single keyboard character, use the character itself. Wenn Sie z. b. den Buchstaben a darstellen möchten, übergeben Sie die Zeichenfolge "a" an die-Methode.For example, to represent the letter A, pass in the string "A" to the method. Fügen Sie jedes zusätzliche Zeichen an das vorangehende Zeichen an, um mehr als ein Zeichen darzustellen.To represent more than one character, append each additional character to the one preceding it. Um die Buchstaben A, B und C darzustellen, geben Sie den Parameter als "ABC" an.To represent the letters A, B, and C, specify the parameter as "ABC".

Das Pluszeichen (+), das Caretzeichen (^), das Prozentzeichen (%), Tilde (~) und die Klammern () haben eine besondere Bedeutung für SendKeys.The plus sign (+), caret (^), percent sign (%), tilde (~), and parentheses () have special meanings to SendKeys. Um eines dieser Zeichen anzugeben, müssen Sie es in geschweifte Klammern ({}) einschließen.To specify one of these characters, enclose it within braces ({}). Um z. b. das Pluszeichen anzugeben, verwenden Sie "{+}".For example, to specify the plus sign, use "{+}". Um geschweifter Klammern anzugeben, verwenden Sie "{{}" und "{}}".To specify brace characters, use "{{}" and "{}}". Eckige Klammern ([]) haben keine besondere Bedeutung für SendKeys, Sie müssen Sie jedoch in geschweifte Klammern einschließen.Brackets ([ ]) have no special meaning to SendKeys, but you must enclose them in braces. In anderen Anwendungen haben eckige Klammern eine besondere Bedeutung, die ggf. signifikant ist, wenn DDE (Dynamic Data Exchange) auftritt.In other applications, brackets do have a special meaning that might be significant when dynamic data exchange (DDE) occurs.

Caution

Wenn Ihre Anwendung für internationale Verwendung mit unterschiedlichen Tastaturen vorgesehen ist, kann ein Verwenden von Send zu unvorhersehbaren Ergebnissen führen und sollte vermieden werden.If your application is intended for international use with a variety of keyboards, the use of Send could yield unpredictable results and should be avoided.

Verwenden Sie die Codes in der folgenden Tabelle, um Zeichen anzugeben, die nicht angezeigt werden, wenn Sie eine Taste drücken, z. b. Eingabe oder Tabulator Taste, und Schlüssel, die Aktionen anstelle von Zeichen darstellen.To specify characters that aren't displayed when you press a key, such as ENTER or TAB, and keys that represent actions rather than characters, use the codes in the following table.

KeyKey CodeCode
RÜCKTASTEBACKSPACE {Backspace}, {b} oder {Bksp}{BACKSPACE}, {BS}, or {BKSP}
BREAKBREAK Umbruch{BREAK}
FeststelltasteCAPS LOCK {CapsLock}{CAPSLOCK}
ENTF oder löschenDEL or DELETE {DELETE} oder {del}{DELETE} or {DEL}
NACH-UNTEN-TASTEDOWN ARROW Auf{DOWN}
ENDEEND Schließlich{END}
EINGABETASTEENTER {Enter} oder ~{ENTER} or ~
ESCESC {ESC}{ESC}
HILFEHELP Hilft{HELP}
POS1HOME {HOME}{HOME}
INS oder einfügenINS or INSERT {INSERT} oder {ins}{INSERT} or {INS}
NACH-LINKS-TASTELEFT ARROW Linken{LEFT}
NUM-SperreNUM LOCK NUM{NUMLOCK}
BILD-ABPAGE DOWN {PGDN}{PGDN}
BILD-AUFPAGE UP {PGUP}{PGUP}
Bildschirm druckenPRINT SCREEN {PrtSc} (für zukünftige Verwendung reserviert){PRTSC} (reserved for future use)
NACH-RECHTS-TASTERIGHT ARROW Rechten{RIGHT}
ScrollsperreSCROLL LOCK {ScrollLock}{SCROLLLOCK}
TABTAB {TAB}{TAB}
NACH-OBEN-TASTEUP ARROW {UP}{UP}
F1F1 {F1}{F1}
F2F2 {F2}{F2}
F3F3 {F3}{F3}
F4F4 {F4}{F4}
F5F5 {F5}{F5}
F6F6 {F6}{F6}
F7F7 {F7}{F7}
F8F8 {F8}{F8}
F9F9 {F9}{F9}
F10F10 {F10}{F10}
F11F11 {F11}{F11}
F12F12 {F12}{F12}
F13F13 {F13}{F13}
F14F14 {F14}{F14}
F15F15 {F15}{F15}
F16F16 {F16}{F16}
Keypad hinzufügenKeypad add Eren{ADD}
Keypad subtrahierenKeypad subtract Subtrahieren{SUBTRACT}
TastenkombinationKeypad multiply Lik{MULTIPLY}
Unterteilung von KeypadKeypad divide Glie{DIVIDE}

Um Schlüssel in Kombination mit einer Kombination der UMSCHALT-, STRG-und Alt-Taste anzugeben, stellen Sie dem Schlüsselcode einen oder mehrere der folgenden Codes voran.To specify keys combined with any combination of the SHIFT, CTRL, and ALT keys, precede the key code with one or more of the following codes.

KeyKey CodeCode
SchussSHIFT +
DrückenCTRL ^
ALTALT %

Um anzugeben, dass eine beliebige Kombination von Shift, STRG und Alt gedrückt bleiben soll, während mehrere andere Tasten gedrückt werden, schließen Sie den Code für diese Schlüssel in Klammern ein.To specify that any combination of SHIFT, CTRL, and ALT should be held down while several other keys are pressed, enclose the code for those keys in parentheses. Um beispielsweise anzugeben, dass die UMSCHALTTASTE gedrückt werden soll, während E und C gedrückt werden, verwenden Sie "+ (EC)".For example, to specify to hold down SHIFT while E and C are pressed, use "+(EC)". Um anzugeben, dass die UMSCHALTTASTE gedrückt werden soll, während E gedrückt wird, gefolgt von C ohne Shift, verwenden Sie "+ EC".To specify to hold down SHIFT while E is pressed, followed by C without SHIFT, use "+EC".

Verwenden Sie das Format {Key Number}, um sich wiederholende Schlüssel anzugeben.To specify repeating keys, use the form {key number}. Sie müssen ein Leerzeichen zwischen Schlüssel und Zahl platzieren.You must put a space between key and number. {Left 42} bedeutet beispielsweise, dass die nach-links-Taste 42 Mal gedrückt wird. {h 10} bedeutet, h 10-Mal zu drücken.For example, {LEFT 42} means press the LEFT ARROW key 42 times; {h 10} means press H 10 times.

Note

Da keine verwaltete Methode zum Aktivieren einer anderen Anwendung vorhanden ist, können Sie diese Klasse in der aktuellen Anwendung verwenden oder systemeigene Windows-Methoden verwenden, wie z. b. FindWindow und SetForegroundWindow, um den Fokus auf andere Anwendungen zu erzwingen.Because there is no managed method to activate another application, you can either use this class within the current application or use native Windows methods, such as FindWindow and SetForegroundWindow, to force focus on other applications.

Note

Die SendKeys -Klasse wurde für .NET Framework 3.0 aktualisiert, damit sie in Anwendungen verwendet werden kann, die unter Windows Vista ausgeführt werden.The SendKeys class has been updated for the .NET Framework 3.0 to enable its use in applications that run on Windows Vista. Die verbesserte Sicherheit von Windows Vista (Stichwort Benutzerkontensteuerung) verhindert, dass die vorherige Implementierung ordnungsgemäß funktioniert.The enhanced security of Windows Vista (known as User Account Control or UAC) prevents the previous implementation from working as expected.

Die SendKeys -Klasse ist anfällig für Probleme hinsichtlich der zeitlichen Steuerung, sodass einige Entwickler gezwungen waren, Umgehungslösungen zu finden.The SendKeys class is susceptible to timing issues, which some developers have had to work around. Die aktualisierte Implementierung ist immer noch anfällig für Probleme hinsichtlich der zeitlichen Steuerung, ist jedoch etwas schneller und erfordert möglicherweise Änderungen an den Umgehungslösungen.The updated implementation is still susceptible to timing issues, but is slightly faster and may require changes to the workarounds. Die SendKeys -Klasse versucht zunächst, die vorherige Implementierung zu verwenden. Schlägt dies fehl, wird die neue Implementierung verwendet.The SendKeys class tries to use the previous implementation first, and if that fails, uses the new implementation. Infolgedessen verhält sich die SendKeys -Klasse unter verschiedenen Betriebssystemen möglicherweise unterschiedlich.As a result, the SendKeys class may behave differently on different operating systems. Verwendet die SendKeys -Klasse die neue Implementierung, wartet die SendWait -Methode nicht auf zu verarbeitende Nachrichten, wenn diese an einen anderen Prozess gesendet werden.Additionally, when the SendKeys class uses the new implementation, the SendWait method will not wait for messages to be processed when they are sent to another process.

Ist für Ihre Anwendung ein einheitliches, vom Betriebssystem unabhängiges Verhalten erforderlich, können Sie für die SendKeys -Klasse das Verwenden der neuen Implementierung erzwingen, indem Sie die folgende Anwendungseinstellung in Ihre "app.config"-Datei einfügen.If your application relies on consistent behavior regardless of the operating system, you can force the SendKeys class to use the new implementation by adding the following application setting to your app.config file.

<appSettings>

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

</appSettings>

Soll die SendKeys -Klasse gezwungen werden, die vorherige Implementierung zu verwenden, geben Sie stattdessen den Wert "JournalHook" an.To force the SendKeys class to use the previous implementation, use the value "JournalHook" instead.

Methods

Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
Flush()

Verarbeitet alle Windows-Meldungen, die sich derzeit in der Meldungswarteschlange befinden.Processes all the Windows messages currently in the message queue.

GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
Send(String)

Sendet Tastatureingaben an die aktive Anwendung.Sends keystrokes to the active application.

SendWait(String)

Sendet die angegebenen Tasten an die aktive Anwendung und wartet anschließend die Verarbeitung der Meldungen ab.Sends the given keys to the active application, and then waits for the messages to be processed.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Applies to