Udostępnij za pośrednictwem


SendKeys.Send(String) Metoda

Definicja

Wysyła naciśnięcia klawiszy do aktywnej aplikacji.

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)

Parametry

keys
String

Ciąg naciśnięć klawiszy do wysłania.

Wyjątki

Nie ma aktywnej aplikacji do wysyłania naciśnięć klawiszy.

keys nie reprezentuje prawidłowych naciśnięć klawiszy.

Przykłady

W poniższym przykładzie kodu pokazano, jak używać Send metody . Aby uruchomić przykład, wklej następujący kod w formularzu o nazwie Form1 zawierający przycisk o nazwie Button1. Upewnij się, że zdarzenia kliknięcia są skojarzone z ich metodami obsługi zdarzeń w tym przykładzie. Właściwość kontrolki przycisku powinna być ustawiona TabIndex na wartość 0. Po uruchomieniu przykładu kliknij dwukrotnie formularz, aby wyzwolić zdarzenie kliknięcia przycisku.

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

Uwagi

Każdy klucz jest reprezentowany przez co najmniej jeden znak. Aby określić pojedynczy znak klawiatury, użyj samego znaku . Na przykład aby reprezentować literę A, przekaż ciąg "A" do metody . Aby reprezentować więcej niż jeden znak, dołącz każdy dodatkowy znak do poprzedniego znaku. Aby reprezentować litery A, B i C, określ parametr jako "ABC".

Znak plus (+), daszek (^), znak procentu (%), tilde (~) i nawiasy () mają specjalne znaczenie dla SendKeys. Aby określić jeden z tych znaków, należy go ująć w nawiasy klamrowe ({}). Aby na przykład określić znak plus, użyj ciągu "{+}". Aby określić znaki nawiasu klamrowego, użyj ciągu "{{}" i "{}}". Nawiasy kwadratowe ([ ]) nie mają specjalnego znaczenia dla SendKeyselementu , ale należy je ująć w nawiasy klamrowe. W innych aplikacjach nawiasy kwadratowe mają specjalne znaczenie, które może być istotne w przypadku dynamicznej wymiany danych (DDE).

Przestroga

Jeśli aplikacja jest przeznaczona do użytku międzynarodowego z różnymi klawiaturami, użycie Send może przynieść nieprzewidywalne wyniki i należy unikać.

Aby określić znaki, które nie są wyświetlane podczas naciskania klawisza, takiego jak ENTER lub TAB, oraz klucze reprezentujące akcje, a nie znaki, należy użyć kodów w poniższej tabeli.

Klucz Kod
BACKSPACE {BACKSPACE}, {BS}lub {BKSP}
PRZERWY {BREAK}
CAPS LOCK {CAPSLOCK}
DEL lub DELETE {DELETE} lub {DEL}
STRZAŁKA W DÓŁ {DOWN}
END {END}
ENTER {ENTER}lub ~
ESC {ESC}
POMOC {HELP}
STRONA GŁÓWNA {HOME}
INS lub INSERT {INSERT} lub {INS}
STRZAŁKA W LEWO {LEFT}
BLOKADA NUM {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
EKRAN DRUKOWANIA {PRTSC} (zarezerwowane do użytku w przyszłości)
STRZAŁKA W PRAWO {RIGHT}
BLOKADA PRZEWIJANIA {SCROLLLOCK}
TAB {TAB}
STRZAŁKA W GÓRĘ {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}
Dodawanie klawiatury {ADD}
Odejmowanie klawiatury {ODEJMOWANIE}
Mnożenie klawiatury {MNOŻENIE}
Dzielenie klawiatury {DIVIDE}

Aby określić klucze połączone z dowolną kombinacją klawiszy SHIFT, CTRL i ALT, przed kodem klawisza należy wykonać co najmniej jeden z poniższych kodów.

Klucz Kod
SHIFT +
CTRL ^
ALT %

Aby określić, że każda kombinacja klawiszy SHIFT, CTRL i ALT powinna być przytrzymywane, podczas gdy kilka innych klawiszy jest naciśniętych, należy ująć kod dla tych klawiszy w nawiasy. Aby na przykład określić, aby przytrzymać klawisze SHIFT, podczas gdy naciśnięte są klawisze E i C, użyj znaku "+(EC)". Aby określić, aby przytrzymać klawisze SHIFT, gdy klawisz E jest naciśnięty, a następnie C bez klawisza SHIFT, użyj klawisza "+EC".

Aby określić powtarzające się klucze, użyj formularza {key number}. Musisz umieścić spację między kluczem a liczbą. Na przykład {LEFT 42} oznacza naciśnięcie klawisza STRZAŁKA W LEWO 42 razy; {h 10} oznacza naciśnięcie klawisza H 10 razy.

Uwaga

Ponieważ nie ma metody zarządzanej do aktywowania innej aplikacji, możesz użyć tej klasy w bieżącej aplikacji lub użyć natywnych metod Windows, takich jak FindWindow i SetForegroundWindow, aby wymusić skupienie się na innych aplikacjach.

Uwaga

Klasa SendKeys została zaktualizowana dla .NET Framework 3.0, aby umożliwić korzystanie z niego w aplikacjach uruchamianych w Windows Vista. Zwiększone zabezpieczenia Windows Vista (znane jako Kontrola konta użytkownika lub kontrola konta użytkownika) zapobiega poprzedniej implementacji działa zgodnie z oczekiwaniami.

Klasa SendKeys jest podatna na problemy z chronometrażem, które niektórzy deweloperzy musieli obejść. Zaktualizowana implementacja jest nadal podatna na problemy z chronometrażem, ale jest nieco szybsza i może wymagać zmian w obejściach. Klasa SendKeys próbuje najpierw użyć poprzedniej implementacji, a jeśli to się nie powiedzie, użyj nowej implementacji. W związku z tym SendKeys klasa może zachowywać się inaczej w różnych systemach operacyjnych. Ponadto, gdy SendKeys klasa używa nowej implementacji, SendWait metoda nie będzie czekać na przetworzenie komunikatów podczas ich wysyłania do innego procesu.

Jeśli aplikacja opiera się na spójnym zachowaniu niezależnie od systemu operacyjnego, możesz wymusić SendKeys użycie nowej implementacji klasy przez dodanie następującego ustawienia aplikacji do pliku app.config.

<appSettings>

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

</appSettings>

Aby wymusić SendKeys użycie poprzedniej implementacji klasy, użyj wartości "JournalHook" .

Dotyczy