Assembly: System.Windows.Forms (in System.Windows.Forms.dll)
Ausnahme | Bedingung |
---|---|
InvalidOperationException |
Es ist keine aktive Anwendung vorhanden, an die Tastaturanschläge gesendet werden können.
|
ArgumentException |
keys stellt keine gültigen Tastaturanschläge dar
|
Jede Taste wird durch ein oder mehrere Zeichen dargestellt. Verwenden Sie zum Angeben eines einzelnen Zeichens der Tastatur das Zeichen selbst. Um beispielsweise den Buchstaben A darzustellen, übergeben Sie der Methode die Zeichenfolge "A". Wenn mehr als ein Zeichen dargestellt werden soll, fügen Sie die zusätzlichen Zeichen einfach an. Für die Darstellung der Buchstaben A, B und C geben Sie den Parameter "ABC" an.
Die Zeichen Plus (+), Zirkumflex (^), Prozent (%), Tilde (~) sowie die runden Klammern ( ) haben für SendKeys eine besondere Bedeutung. Zum Angeben eines dieser Zeichen schließen Sie es in geschweifte Klammern ({}) ein. Geben Sie das Pluszeichen z. B. durch "{+}" an. Geschweifte Klammern geben Sie mit "{{}" und "{}}" an. Eckige Klammern ([ ]) haben zwar keinerlei Spezialbedeutung für SendKeys, müssen aber auch in geschweifte Klammern eingeschlossen werden. In anderen Anwendungen haben eckige Klammern eine besondere Bedeutung, die möglicherweise für dynamischen Datenaustausch (DDE, Dynamic Data Exchange) relevant ist.
Wenn die Anwendung für den internen Gebrauch mit verschiedenen Tastaturen vorgesehen ist, könnte die Verwendung von Send unvorhersehbare Ergebnisse hervorrufen und sollte vermieden werden.
|
Verwenden Sie die Codes in der folgenden Tabelle zum Angeben von Zeichen, die nicht durch Drücken einer Taste wie der EINGABE- oder TAB-TASTE angezeigt werden, sowie von Tasten, die anstelle von Zeichen Aktionen darstellen.
Schlüssel
|
Code
|
---|---|
RÜCKTASTE
|
{BACKSPACE}, {BS} oder {BKSP}
|
UNTBR
|
{BREAK}
|
FESTSTELLTASTE
|
{CAPSLOCK}
|
ENTF oder RÜCKSCHRITT
|
{DELETE} oder {DEL}
|
NACH-UNTEN-TASTE
|
{DOWN}
|
ENDE
|
{END}
|
EINGABETASTE
|
{ENTER} oder ~
|
ESC
|
{ESC}
|
HILFE
|
{HELP}
|
POS1
|
{HOME}
|
EINFG
|
{INSERT} oder {INS}
|
NACH-LINKS
|
{LEFT}
|
NUM
|
{NUMLOCK}
|
BILD-AB
|
{PGDN}
|
BILD-AUF
|
{PGUP}
|
DRUCK
|
{PRTSC} (für zukünftige Verwendung reserviert)
|
NACH-RECHTS
|
{RIGHT}
|
ROLLEN
|
{SCROLLLOCK}
|
TAB
|
{TAB}
|
NACH-OBEN-TASTE
|
{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}
|
ADDITIONSTASTE (Zehnertastatur)
|
{ADD}
|
SUBTRAKTIONSTASTE (Zehnertastatur)
|
{SUBTRACT}
|
MULTIPLIKATIONSTASTE (Zehnertastatur)
|
{MULTIPLY}
|
DIVISIONSTASTE (Zehnertastatur)
|
{DIVIDE}
|
Stellen Sie zum Angeben beliebiger Tastenkombinationen, bei denen die UMSCHALTTASTE, STRG und ALT verwendet werden, dem Tastencode einen oder mehrere der folgenden Codes voran.
Schlüssel
|
Code
|
---|---|
SHIFT
|
+
|
CTRL
|
^
|
ALT
|
%
|
Um festzulegen, dass eine beliebige Kombination von UMSCHALT, STRG und ALT gedrückt gehalten werden soll, während andere Tasten gedrückt werden, schließen Sie den Code für diese Tasten in runde Klammern ein. Um beispielsweise anzugeben, dass UMSCHALT gedrückt gehalten werden soll, während E und C gedrückt werden, verwenden Sie "+(EC)". Wenn Sie angeben möchten, dass beim Drücken von E die UMSCHALTTASTE gedrückt gehalten werden soll, und anschließend C ohne UMSCHALT gedrückt werden soll, verwenden Sie "+EC".
Geben Sie das wiederholte Drücken einer Tasten in der Form {Taste Anzahl} an. Zwischen Taste und Zahl muss ein Leerzeichen stehen. So steht {LEFT 42} beispielsweise für ein 42-maliges Drücken der NACH-LINKS-TASTE und {h 10} für ein zehnmaliges Drücken von H.
Da es keine verwaltete Methode für das Aktivieren einer anderen Anwendung gibt, können Sie diese Klasse entweder in der aktuellen Anwendung verwenden oder die Aktivierung anderer Anwendungen mit systemeigenen Methoden von Windows wie FindWindow und SetForegroundWindow erzwingen.
|
Die SendKeys-Klasse wurde für .NET Framework 3.0 aktualisiert, um die Verwendung in Anwendungen unter Windows Vista zu ermöglichen. Durch die erhöhte Sicherheit von Windows Vista (die Benutzerkontensteuerung) kann die vorherige Implementierung nicht erwartungsgemäß ausgeführt werden.
Die SendKeys-Klasse ist anfällig für Probleme bei der zeitlichen Steuerung, die einige Entwickler umgehen mussten. Die aktualisierte Implementierung ist noch immer anfällig für diese Probleme, ist jedoch etwas schneller und erfordert möglicherweise Änderungen an den Problemumgehungen. Die SendKeys-Klasse versucht zunächst, die vorherige Implementierung zu verwenden. Wenn dies nicht gelingt, wird die neue Implementierung verwendet. Infolgedessen verhält sich die SendKeys-Klasse auf verschiedenen Betriebssystemen möglicherweise unterschiedlich. Außerdem wartet bei Verwendung der neuen Implementierung durch die SendKeys-Klasse die SendWait-Methode nicht die Verarbeitung von Meldungen ab, wenn diese an einen anderen Prozess gesendet werden.
Wenn die Anwendung auf ein vom Betriebssystem unabhängiges, einheitliches Verhalten angewiesen ist, können Sie die Verwendung der neuen Implementierung durch die SendKeys-Klasse erzwingen, indem Sie der app.config-Datei die folgende Anwendungseinstellung hinzufügen.
<appSettings>
<add key="SendKeys" value="SendInput"/>
</appSettings>
Um die Verwendung der vorherigen Implementierung durch die SendKeys-Klasse zu erzwingen, verwenden Sie stattdessen den Wert "JournalHook".
|
Im folgenden Codebeispiel wird die Verwendung der Send-Methode veranschaulicht. Fügen Sie zum Ausführen des Beispiels folgenden Code in ein Formular mit dem Namen Form1 ein, das eine Schaltfläche mit dem Namen Button1 enthält. Stellen Sie sicher, dass die Mausklickereignisse in diesem Beispiel ihren Ereignisbehandlungsmethoden zugeordnet werden. Die TabIndex-Eigenschaft des Schaltflächen-Steuerelements sollte auf 0 festgelegt sein. Doppelklicken Sie bei der Ausführung des Beispiels auf das Formular, um das Mausklickereignis der Schaltfläche auszulösen.
// 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}"); }
- SecurityPermission für nicht verwalteten Code zum Aufrufen dieser Methode. Zugeordnete Enumeration: SecurityPermissionFlag.UnmanagedCode.
Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น