SendKeys Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Udostępnia metody wysyłania naciśnięć klawiszy do aplikacji.
public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
- Dziedziczenie
-
SendKeys
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ęć są skojarzone z metodami obsługi zdarzeń w tym przykładzie. Właściwość kontrolki przycisku powinna być ustawiona TabIndex na 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
Służy SendKeys do wysyłania naciśnięć klawiszy i kombinacji naciśnięć klawiszy do aktywnej aplikacji. Nie można utworzyć wystąpienia tej klasy. Aby wysłać naciśnięcie klawiszy do klasy i natychmiast kontynuować przepływ programu, użyj polecenia Send. Aby poczekać na wszystkie procesy uruchomione przez naciśnięcie klawiszy, użyj polecenia SendWait.
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 | {SUBTRACT} |
Mnożenie klawiatury | {MNOŻENIE} |
Dzielenie klawiatury | {DIVIDE} |
Aby określić klucze połączone z dowolną kombinacją klawiszy SHIFT, CTRL i ALT, przed kodem klucza z co najmniej jednym z poniższych kodów.
Klucz | Kod |
---|---|
SHIFT | + |
CTRL | ^ |
ALT | % |
Aby określić, że każda kombinacja klawiszy SHIFT, CTRL i ALT powinna być wciśnięta, podczas gdy kilka innych klawiszy jest naciśniętych, należy ująć kod dla tych kluczy w nawiasach. Na przykład, aby określić, aby przytrzymać klawisze SHIFT, podczas gdy klawisz E i C są naciskane, użyj klawisza "+(EC)". Aby określić, czy wciśnięty klawisz SHIFT jest przyciś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
, w celu wymuszenia koncentracji uwagi na innych aplikacjach.
Uwaga
Klasa SendKeys została zaktualizowana dla .NET Framework 3.0, aby umożliwić jej użycie w aplikacjach uruchamianych w Windows Vista. Ulepszone zabezpieczenia Windows Vista (znane jako Kontrola konta użytkownika lub kontrola konta użytkownika) zapobiega poprzedniej implementacji działającej zgodnie z oczekiwaniami.
Klasa jest podatna SendKeys 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żyje nowej implementacji. W rezultacie 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 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"
.
Metody
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
Flush() |
Przetwarza wszystkie komunikaty Windows obecnie w kolejce komunikatów. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
Send(String) |
Wysyła naciśnięcia klawiszy do aktywnej aplikacji. |
SendWait(String) |
Wysyła podane klucze do aktywnej aplikacji, a następnie czeka na przetworzenie komunikatów. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |