SendKeys 類別

定義

提供傳送按鍵至應用程式的方法。

public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
繼承
SendKeys

範例

下列程式碼範例會示範如何使用 Send 方法。 若要執行此範例,請將下列程式碼貼到名為 Form1 的表單中,其中包含名為 Button1 的按鈕。 請確定按一下事件與此範例中的事件處理方法相關聯。 按鈕控制項的 TabIndex 屬性應該設定為 0。 執行範例時,按兩下表單以觸發按鈕的 Click 事件。

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

備註

使用 SendKeys 將按鍵和按鍵組合傳送至使用中的應用程式。 無法執行個體化這個類別。 若要將按鍵傳送至類別,並立即繼續進行程式流程,請使用 Send 。 若要等候按鍵啟動的任何進程,請使用 SendWait

每個索引鍵都以一或多個字元表示。 若要指定單一鍵盤字元,請使用字元本身。 例如,若要表示字母 A,請將字串 「A」 傳遞至 方法。 若要代表多個字元,請將每個額外的字元附加至其前面的字元。 若要表示字母 A、B 和 C,請將 參數指定為 「ABC」。

加號 (+) 、插入號 (^) 、百分比符號 (%) 、波浪 (~) ,以及括弧 () 對 具有特殊意義 SendKeys 。 若要指定其中一個字元,請將它括在大括弧 ({}) 中。 例如,若要指定加號,請使用 「{+}」。 若要指定大括弧字元,請使用 「{ {} 」 和 「 {} }」。 方括弧 ([ ]) 對 沒有特殊意義 SendKeys ,但您必須用大括弧括住。 在其他應用程式中,方括弧具有特殊意義,當動態資料交換 (DDE) 發生時,可能會相當重要。

警告

如果您的應用程式是設計成可搭配國際上現有的各種鍵盤來使用,則使用 Send 可能會產生無法預期的結果,應該予以避免。

若要指定當您按下按鍵時未顯示的字元,例如 ENTER 或 TAB,以及代表動作而非字元的按鍵,請使用下表中的程式碼。

Key 程式碼
退格鍵 {BACKSPACE}、{BS}或 {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL 或 DELETE {DELETE} 或 {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER} 或 ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS 或 INSERT {INSERT} 或 {INS}
向左鍵 {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
列印畫面 {PRTSC} (保留供日後使用)
向右鍵 {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
向上鍵 {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}
鍵盤新增 {ADD}
鍵盤減去 {SUBTRACT}
鍵盤乘法 {MULTIPLY}
按鍵控制板除法 {DIVIDE}

若要指定與 SHIFT、CTRL 和 ALT 鍵的任何組合結合的按鍵,請在按鍵程式碼前面加上下列一或多個程式碼。

Key 程式碼
SHIFT +
CTRL ^
ALT %

若要指定按下其他數個按鍵時,應該按住 SHIFT、CTRL 和 ALT 的任何組合,請將這些按鍵的程式碼括在括弧中。 例如,若要指定在按下 E 和 C 時按住 SHIFT,請使用 「+ (EC) 」。 若要指定在按下 E 時按住 SHIFT,後面接著 C 而不使用 SHIFT,請使用 「+EC」。

若要指定重複索引鍵,請使用 {key number} 格式。 您必須在索引鍵和數位之間放置空格。 例如,{LEFT 42} 表示按下向左鍵 42 次;{h 10} 表示按 H 10 次。

注意

因為沒有 Managed 方法可以啟動另一個應用程式,所以您可以在目前的應用程式中使用此類別,或使用原生Windows方法,例如 FindWindowSetForegroundWindow ,強制將焦點放在其他應用程式上。

注意

SendKeys 類別已針對 .NET Framework 3.0 進行更新,以便能夠在 Windows Vista 上執行的應用程式中使用。 Windows Vista 的增強式安全性 (稱為使用者帳戶控制或 UAC) 會讓之前的實作無法如預期般運作。

SendKeys 類別容易受到時間問題的影響,某些開發人員必須解決這些問題。 更新的實作仍然容易受到時間問題的影響,但是速度會稍微快一些,而且可能需要對解決方法進行變更。 SendKeys 類別會先嘗試使用之前的實作;如果失敗,則使用新的實作。 因此, SendKeys 類別在不同的作業系統上可能會有不同的運作方式。 此外,當 SendKeys 類別使用新的實作時, SendWait 方法不會在將訊息傳送至另一個處理序時,等候處理這些訊息。

如果不論作業系統為何,應用程式都需要一致的行為,您可以強制 SendKeys 類別使用新的實作,方式是將下列應用程式設定加入 app.config 檔中。

<appSettings>

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

</appSettings>

若要強制 SendKeys 類別使用之前的實作,請改用 "JournalHook" 值。

方法

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Flush()

處理目前在訊息佇列中的所有 Windows 訊息。

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
Send(String)

傳送按鍵至使用中的應用程式。

SendWait(String)

傳送指定的按鍵至使用中的應用程式,然後等待訊息的處理。

ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於