SendKeys.Send(String) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Skickar tangenttryckningar till det aktiva programmet.
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)
Parametrar
- keys
- String
Strängen med tangenttryckningar som ska skickas.
Undantag
Det finns inget aktivt program att skicka tangenttryckningar till.
keys representerar inte giltiga tangenttryckningar.
Exempel
I följande kodexempel visas hur du använder Send metoden. Om du vill köra exemplet klistrar du in följande kod i ett formulär med namnet Form1 som innehåller en knapp med namnet Button1. Kontrollera att klickhändelserna är associerade med deras metoder för händelsehantering i det här exemplet. Knappkontrollens TabIndex egenskap ska vara inställd på 0. När exemplet körs dubbelklickar du på formuläret för att utlösa knappens klickhändelse.
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
Kommentarer
Varje nyckel representeras av ett eller flera tecken. Om du vill ange ett enskilt tangentbordstecken använder du själva tecknet. Om du till exempel vill representera bokstaven A skickar du strängen "A" till metoden. Om du vill representera fler än ett tecken lägger du till varje ytterligare tecken i det som föregår det. Om du vill representera bokstäverna A, B och C anger du parametern som "ABC".
Plustecknet (+), caret (^), procenttecknet (%), tilde (~) och parenteser () har särskilda betydelser för SendKeys. Om du vill ange ett av dessa tecken omger du det inom klammerparenteser ({}). Om du till exempel vill ange plustecknet använder du "{+}". Om du vill ange klammerparentestecken använder du {{}" och "{}}". Hakparenteser ([ ]) har ingen särskild betydelse för SendKeys, men du måste omsluta dem i klammerparenteser. I andra program har hakparenteser en särskild betydelse som kan vara betydande när dynamiskt datautbyte (DDE) inträffar.
Caution
Om programmet är avsett för internationell användning med en mängd olika tangentbord kan användningen av Send ge oförutsägbara resultat och bör undvikas.
Om du vill ange tecken som inte visas när du trycker på en nyckel, till exempel RETUR eller TABB, och nycklar som representerar åtgärder i stället för tecken, använder du koderna i följande tabell.
| Key | Kod |
|---|---|
| BACKSTEG | {BACKSPACE}, {BS} eller {BKSP} |
| BREAK | {BREAK} |
| SKIFTLÅSTANGENT | {CAPSLOCK} |
| DEL eller DELETE | {DELETE} eller {DEL} |
| NEDPIL | {DOWN} |
| END | {END} |
| ENTER | {ENTER}eller ~ |
| ESC | {ESC} |
| HELP | {HJÄLP} |
| HOME | {HOME} |
| INS eller INSERT | {INSERT} eller {INS} |
| VÄNSTERPIL | {VÄNSTER} |
| NUM LOCK | {NUMLOCK} |
| SIDAN NEDÅT | {PGDN} |
| BLADERA UPP | {PGUP} |
| Print Screen | {PRTSC} (reserverad för framtida användning) |
| HÖGERPIL | {RIGHT} |
| RULLNINGSLÅS | {SCROLLLOCK} |
| TAB | {TAB} |
| UPPÅTPIL | {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} |
| Lägg till knappsats | {ADD} |
| Subtrahera knappsats | {SUBTRACT} |
| Multiplicera knappsats | {MULTIPLICERA} |
| Delning av knappsats | {DIVIDE} |
Om du vill ange nycklar som kombineras med valfri kombination av SKIFT-, CTRL- och ALT-tangenterna, föregår du nyckelkoden med en eller flera av följande koder.
| Key | Kod |
|---|---|
| SKIFT | + |
| CTRL | ^ |
| ALT | % |
Om du vill ange att en kombination av SKIFT, CTRL och ALT ska hållas nere medan flera andra nycklar trycks ned omsluter du koden för dessa nycklar inom parenteser. Om du till exempel vill ange att SKIFT ska hållas nere medan E och C trycks ned använder du "+(EC)". Om du vill ange att SKIFT ska hållas nere medan E trycks ned, följt av C utan SKIFT, använder du "+EC".
Om du vill ange upprepade nycklar använder du formuläret {nyckelnummer}. Du måste placera ett blanksteg mellan nyckel och tal. {LEFT 42} innebär till exempel att du trycker på VÄNSTERPIL 42 gånger. {h 10} innebär tryck på H 10 gånger.
Note
Eftersom det inte finns någon hanterad metod för att aktivera ett annat program kan du antingen använda den här klassen i det aktuella programmet eller använda interna Windows metoder, till exempel FindWindow och SetForegroundWindow, för att tvinga fokus på andra program.
Note
Klassen SendKeys har uppdaterats för .NET Framework 3.0 för att aktivera dess användning i program som körs på Windows Vista. Den förbättrade säkerheten för Windows Vista (kallas user account control eller UAC) förhindrar att den tidigare implementeringen fungerar som förväntat.
Klassen SendKeys är känslig för tidsproblem, som vissa utvecklare har varit tvungna att kringgå. Den uppdaterade implementeringen är fortfarande känslig för tidsproblem, men är något snabbare och kan kräva ändringar i lösningarna. Klassen SendKeys försöker använda den tidigare implementeringen först, och om det misslyckas använder den nya implementeringen. Därför kan klassen SendKeys bete sig annorlunda på olika operativsystem. När SendKeys klassen använder den nya implementeringen SendWait väntar metoden dessutom inte på att meddelanden ska bearbetas när de skickas till en annan process.
Om ditt program förlitar sig på konsekvent beteende oavsett operativsystem kan du tvinga SendKeys klassen att använda den nya implementeringen genom att lägga till följande programinställning i din app.config-fil.
<appSettings>
<add key="SendKeys" value="SendInput"/>
</appSettings>
Om du vill tvinga SendKeys klassen att använda den tidigare implementeringen använder du värdet "JournalHook" i stället.