SendKeys Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje metody pro odesílání stisknutí kláves do aplikace.
public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
- Dědičnost
-
SendKeys
Příklady
Následující příklad kódu ukazuje, jak použít metodu Send . Pokud chcete spustit příklad, vložte následující kód do formuláře s názvem Form1 obsahující tlačítko s názvem Button1. V tomto příkladu se ujistěte, že jsou události kliknutí přidružené k jejich metodám zpracování událostí. Vlastnost ovládacího prvku TabIndex tlačítka by měla být nastavena na hodnotu 0. Když je příklad spuštěný, poklikejte na formulář a aktivujte událost kliknutí na tlačítko.
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
Poznámky
Slouží SendKeys k odesílání kombinací kláves a stisknutí kláves do aktivní aplikace. Tuto třídu nelze vytvořit instanci. Chcete-li odeslat stisknutí klávesy do třídy a okamžitě pokračovat v toku programu, použijte Send. Chcete-li počkat na všechny procesy spuštěné pomocí stisknutí klávesy, použijte SendWait.
Každý klíč je reprezentován jedním nebo více znaky. Pokud chcete zadat jeden znak klávesnice, použijte samotný znak. Pokud chcete například vyjádřit písmeno A, předejte do metody řetězec "A". Pokud chcete znázornit více než jeden znak, připojte každý další znak k předchozímu znaku. Chcete-li znázorňovat písmena A, B a C, zadejte parametr jako "ABC".
Znaménko plus (+), stříška (^), znak procenta (%), tilda (~) a závorky () mají zvláštní význam pro SendKeys. Pokud chcete zadat jeden z těchto znaků, uzavřete ho do složených závorek ({}). Pokud chcete například zadat znaménko plus, použijte {+}. Chcete-li zadat složené znaky, použijte {{}a "{}}". Závorky ([ ]) nemají žádný zvláštní význam SendKeys, ale musíte je uzavřít do složených závorek. V jinýchaplikacích
Upozornění
Pokud je vaše aplikace určená pro mezinárodní použití s celou řadou klávesnic, může použití Send přinést nepředvídatelné výsledky a mělo by se jim vyhnout.
Pokud chcete zadat znaky, které se nezobrazují při stisknutí klávesy, například ENTER nebo TAB, a klávesy, které představují akce místo znaků, použijte kódy v následující tabulce.
| Klíč | Code |
|---|---|
| BACKSPACE | {BACKSPACE}, {BS} nebo {BKSP} |
| BREAK | {BREAK} |
| Caps Lock | {CAPSLOCK} |
| DEL nebo DELETE | {DELETE} nebo {DEL} |
| ŠIPKA DOLŮ | {DOWN} |
| END | {END} |
| ZADEJTE | {ENTER} nebo ~ |
| ESC | {ESC} |
| HELP | {HELP} |
| HOME | {HOME} |
| INS nebo INSERT | {INSERT} nebo {INS} |
| ŠIPKA VLEVO | {LEFT} |
| NUM LOCK | {NUMLOCK} |
| STRÁNKA DOLŮ | {PGDN} |
| Stránka nahoru | {PGUP} |
| PRINT SCREEN | {PRTSC} (vyhrazeno pro budoucí použití) |
| ŠIPKA VPRAVO | {RIGHT} |
| SCROLL LOCK | {SCROLLLOCK} |
| KARTĚ | {TAB} |
| ŠIPKA NAHORU | {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} |
| Přidat klávesnici | {ADD} |
| Odečítání klávesnice | {ODEČÍST} |
| Násobení klávesnice | {NÁSOBIT} |
| Dělení klávesnice | {DIVIDE} |
Pokud chcete zadat klávesy kombinované s libovolnou kombinací kláves SHIFT, CTRL a ALT, před kód klíče zadejte jeden nebo více následujících kódů.
| Klíč | Code |
|---|---|
| SHIFT | + |
| CTRL | ^ |
| ALT | % |
Chcete-li určit, že libovolná kombinace kláves SHIFT, CTRL a ALT by měla být podržína, zatímco je stisknuto několik dalších kláves, uzavřete kód těchto kláves do závorek. Pokud chcete například zadat, aby se při stisknutí klávesy E a C stiskla klávesa SHIFT, použijte +(EC)." Pokud chcete zadat, aby se při stisknutí klávesy E stiskl stisknutá klávesa SHIFT, a potom C bez SHIFT, použijte "+EC".
Chcete-li zadat opakující se klíče, použijte formulář {číslo klíče}. Mezi klíč a číslo musíte umístit mezeru. Například {LEFT 42} znamená stisknutí klávesy ŠIPKA VLEVO 42krát; {h 10} znamená stisknutí klávesy H 10krát.
Poznámka:
Vzhledem k tomu, že neexistuje žádná spravovaná metoda pro aktivaci jiné aplikace, můžete tuto třídu použít buď v rámci aktuální aplikace, nebo použít nativní metody Systému Windows, například FindWindow a SetForegroundWindow, k vynucení zaměření na jiné aplikace.
Poznámka:
Třída SendKeys byla aktualizována pro rozhraní .NET Framework 3.0 tak, aby umožňovala jeho použití v aplikacích, které běží v systému Windows Vista. Vylepšené zabezpečení systému Windows Vista (označované jako Řízení uživatelských účtů nebo řízení uživatelských účtů) brání předchozí implementaci v očekávaném fungování.
Třída SendKeys je náchylná k problémům s časováním, se kterými museli někteří vývojáři pracovat. Aktualizovaná implementace je stále náchylná k problémům s časováním, ale je o něco rychlejší a může vyžadovat změny alternativních řešení. Třída SendKeys se nejprve pokusí použít předchozí implementaci a pokud to selže, použije novou implementaci. V důsledku toho SendKeys se třída může chovat odlišně v různých operačních systémech. Navíc, když SendKeys třída používá novou implementaci, SendWait metoda nebude čekat na zpracování zpráv při jejich odeslání do jiného procesu.
Pokud vaše aplikace spoléhá na konzistentní chování bez ohledu na operační systém, můžete vynutit SendKeys , aby třída používala novou implementaci přidáním následujícího nastavení aplikace do souboru app.config.
<appSettings>
<add key="SendKeys" value="SendInput"/>
</appSettings>
Chcete-li vynutit, SendKeys aby třída používala předchozí implementaci, použijte místo toho hodnotu "JournalHook" .
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| Flush() |
Zpracovává všechny zprávy systému Windows, které jsou aktuálně ve frontě zpráv. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| Send(String) |
Odešle stisknutí kláves do aktivní aplikace. |
| SendWait(String) |
Odešle dané klíče do aktivní aplikace a potom počká na zpracování zpráv. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |